QT學習筆記1(安裝、建立和訊號與槽)

天龍至尊發表於2020-11-28

1、下載和安裝

前言:Qt是一個跨平臺的C++圖形介面應用程式框架。它提供給開發者建立圖形使用者介面所需的功能,廣泛用於開發GUI程式,也可用於開發非GUI程式。Qt很容易擴充套件,並且允許真正地元件程式設計。基本上,Qt同X Window上的Motif,Openwin,GTK等圖形介面庫以及Windows平臺上的MFC、OWL、VCL、ATL是同型別的東西。

下載連結:http://download.qt.io/archive/qt/5.14/5.14.2/

需要註冊的郵箱賬號和密碼:

勾選所要安裝的元件:

同意則繼續:

開始安裝:

等待一會就會安裝成功!!!

開始執行的介面:

點選NEW按鈕,則新建專案:

裡面有Qt的程式專案,包括Qt Widgets、Qt Quick(QML)、Qt for python等的選項,

然後選擇Qt Widgets:

點選下一步:

點選下一步,勾選“QWidget”,勾去“Generate form”,則不會生成ui編輯檔案:

選擇MinGW 64-bit:

點選下一步,會建立如下幾個檔案:

2、各個檔案的解釋

Application.pro:

1.配置項詳細說明

  1. 註釋:註釋是從一行的#開始,到這一行的結束。
  2. QT += :這個是新增QT專案需要的模組的,若專案中要排除某個模組,也可用QT -=配置項。
  3. TEMPLATE = : 這個配置項確定qmake為這個應用程式生成哪種makefile 。有下面五種形式可供選擇:
app:建立一個應用程式的makefile,這個是預設值,若模組項未指定,將預設使用此項; 
lib:建立一個庫的makefile; 
vcapp:建立一個應用程式的VisualStudio專案檔案; 
vclib:建立一個庫的VisualStudio專案檔案; 
subdirs:這是一個特殊的模板,可以建立一個可進入特定目錄併為一個專案檔案生成makefile,此makfile可以呼叫make;

4. TARGET = :這個配置項用來指定最後生成的目標應用程式的名稱。

5. CONFIG += : 用來告訴qmake關於應用程式的配置資訊,使用+=表示在現有的配置上新增,這樣會更安全。比如,CONFIG += qt warn_on release 其具體的意義為:

qt :告訴qmake此程式是使用qt來連編的。即qmake在連線、為編譯新增所需包含路徑時會考慮qt的庫; 
warn_on :告訴qmake要將編譯器設定為輸出警告資訊形式; 
release :告訴qmake應用程式必須被連編為一個可釋出的應用程式。開發過程中,也可以使用  debug

6. UIC_DIR += :用來指定uic命令,將.ui檔案轉化為ui_*.h檔案存放的目錄。

7. RCC_DIR += :用來指定rcc命令,將.qrc檔案轉換成qrc_*.h檔案存放的目錄。

8. MOC_DIR += :用來指定moc命令,將含有Q_OBJECT的標頭檔案轉換成標準.h檔案存放的目錄。

9. OBJECTS_DIR += :用來指定目標檔案obj的存放目錄。

10. DEPENDPATH += : 用來指定工程的依賴路徑。

11. INCLUDEPATH += : 用來指定工程所需要的標頭檔案。

12. CODECFORSRC += : 用來指定原始檔的編碼格式。

13. FORMS += :用來指定工程中的ui檔案。

14. HEADERS += : 用來指定工程中所包含的標頭檔案。

15. SOURCES += :用來指定工程中包含的原始檔。

16. RESOURCES += :用來指定工程中所包含的資原始檔。

17. LIBS += :用來指定引入的lib檔案的路徑,一般會在前面加下引數-L,根據不同的版本可以分為兩種形式:

Release: LIBS += -L folder Path //release版本引入的  lib檔案 
Debug: LIBS += -L folder Path //debug版本引入的  lib檔案

18. DEFINES += : 用來定義編譯選項。

19. DESTDIR += :用來指定目標的生成路徑。

widget.h:

Widget類進行public繼承QWidget,

Widget(QWidget *parent = nullptr);

這句話表示Widget的建構函式預設傳的是NULL。

widget.cpp:

C++的構造傳參,將parent引數傳給QWidget。

QWidget繼承QObject and QPaintDevice,它的子類有很多,都是元件。

3、訊號與槽

一.訊號

當物件的內部狀態發生改變,訊號就被髮射。只有定義了一個訊號的類和它的子類才能發射這個訊號。

訊號的宣告是在標頭檔案中進行的,QT的signals關鍵字指出進入了訊號宣告區,隨後即可宣告自己的訊號。訊號由moc自動生成,所以不需要在cpp中定義,只需要宣告。

二.

槽是普通的 C++ 成員函式,可以被正常呼叫,它們唯一的特殊性就是很多訊號可以與其相關聯。當與其關聯的訊號被髮射時,這個槽就會被呼叫。槽可以有引數,但槽的引數不能有預設值。

槽函式分為三種型別,即 public slots、private slots 和 protected slots。

public slots:在這個區內宣告的槽意味著任何物件都可將訊號與之相連線。

protected slots:在這個區內宣告的槽意味著當前類及其子類可以將訊號與之相連線。

private slots:在這個區內宣告的槽意味著只有類自己可以將訊號與之相連線。

三.訊號與槽的使用

通過呼叫connect 函式來將某個物件的訊號與另外一個物件的槽函式相關聯,這樣當發射者發射訊號時,接收者的槽函式將被呼叫。

1)一個訊號可以連線到多個槽。

2)一個槽可以被多個訊號連線。

3)訊號也可以連線到訊號,此時前者的發射訊號將導致後者的發射。

4)訊號的引數型別可以與槽的引數型別對應,訊號的引數可以比槽的引數多,但不可以少,否則連線將失敗。

備註:

訊號只宣告,不實現;槽函式可以使用匿名函式進行編寫,也可以內建一個類的成員函式,傳遞的都是函式指標。

QPushButton的訊號與槽:

相關文章