從零開始學Qt(三)從Hello, Qt 說起
從Hello, Qt 說起
?????????????????????????????????????????????????????????????????????????????????????????????????? ????????????-----書不記,熟讀可記;義不精,細思可精。
??? ????首先先說明下,這個教程將會慢慢深入。不然會讓學習的人,望而卻步。所以這篇博客講會以最簡單的“Hello, Qt!”說起,并簡單的介紹下該項目。
??? ??? 我相信有部分同學喜歡專研的,還會深究很多細節(jié)的知識點。所以我的博客將會從這里開始分叉出第二個部分《Qt之漫談》。這個部分可以跟著《從零開始學Qt》同步進行,也可以學習完《從零開始學Qt》后再來吸收第二部分的知識點。作為博主,希望學者漫談部分也要穿插的看。但是看這篇之前務必看《Qt之漫談(一)Qt Creator簡介(1)》。
1、新建工程
?????? ??? 還是跟之前一樣,跟著我一步一步來。我基本每一個步驟都有解釋。
????????就是這么簡單,新建工程結(jié)束。
2、添加一個QLabel控件
??????? 還是跟著我一步一步做。
??????? 1)展開工程的所有文件,如下圖所示:
????????2)雙擊界面文件下的mainwindow.ui,將會進入Qt Designer(界面設計)。
??????? 3)添加QLabel控件,添加方法如下圖所示:
??????? 4)回到編輯界面,具體操作如下圖所示:
3、運行工程
??????? 直接點擊運行工程,具體操作如下圖所示:
????????
????????運行結(jié)果如下圖所示:
????
4、簡單分析工程
??????? 我們對該工程進行簡單的分析,這里將不深入了了解。一來如果一下子就深入講解,篇幅太長,會讓人很厭煩/難受;二來也不適合初學者學習。
??????? 1)簡單介紹工程目錄
????????
??????? 從上圖中可以看到工程由:.pro文件、頭文件、源文件、界面文件組成。其實除了這4個外,還有資源文件,這個工程沒有體現(xiàn)出來。他們到底是啥東西呢?
??????? .pro文件:(project file)就是Qt的工程文件,配置整個工程。由qmake處理得出makefile文件。他可以配置加載Qt的哪些模塊;控制編譯器(release,debug等);配置動態(tài)庫;包含了哪些.cpp、.h文件;包含了哪些資源等等。詳細請看《Qt之漫談》。
??????? 頭文件/源文件:簡單籠統(tǒng)的說,.h 是申明,如類的定義、類成員函數(shù)申明、類的成員變量申明。.cpp可以說是實現(xiàn),如實現(xiàn)函數(shù)、初始化變量等。
????? .ui界面文件:其實是XML,你可以用記事本打開mainwindow.ui。但是我們從Qt Creator,或者Qt Designer里面打開該文件的話,就會顯示我們設計的界面。所以從我們就知道Qt Designer是個啥東西了,不就是編輯XML文件/解析XML文件。他到底是怎么跟我們工程關(guān)聯(lián)起來呢?我們將會在后面的課程中提到。
??????? .qrc資源文件:顧名思義,就是工程的資源唄。比如:圖像資源、Qss資源、音頻資源等。
??? 2)分析main.cpp
?? main.cpp的代碼如下:
#include?"mainwindow.h"
#includeint?main(int?argc,?char?*argv[])
{
????QApplication?a(argc,?argv);
????MainWindow?w;
????w.show();
????return?a.exec();
}前兩行:是包含頭文件,只有包含了才能應用。
在main()函數(shù)里面的的第一句:是創(chuàng)建一個QApplication類的實例。對于Qt程序而已,main函數(shù)一般都會創(chuàng)建一個Application對象(GUI程序是QApplication,非GUI程序是QCoreApplication),該對象是用于管理QT程序的生命周期,開啟事件循環(huán)。
接下來的一句是創(chuàng)建一個MainWindow對象,該對象就是我們前面新建一個QLabel控件的類。該類繼承于主窗口類QMainWindow。
接下來的一句,w.show():是讓該主窗口顯示出來。
接下來a.exec():是開啟事件循環(huán)。等我們關(guān)閉了顯示出來的窗口,該循環(huán)事件也會隨之結(jié)束。
結(jié)束:
?如果有同學會遇到問題,可以加QQ群討論。如果我哪里錯了,也希望有人告知我,我來修改文章,以免誤導他人。
??





