1. 程式人生 > >Qt學習筆記(1) — 深入瞭解Hello World的建立過程

Qt學習筆記(1) — 深入瞭解Hello World的建立過程


年初的時候就準備學習Qt了,因為工作原因被擱淺好久,現在開始學也不晚,以後每週更新2遍博文作為總結。

學過Windows開發的,會覺得Qt很親切,學起來不是很費勁(PS: 環境搭建比較簡單,本文不作說明),但是還得從Hello World開始一步步來。下面,筆者將用4種不同的方式來建立工程。


【QtWidgets Application】
這裡寫圖片描述
所有檔案系統均為建立,主要包括:
1. 專案檔案:HelloWorld-1.pro;
2. 介面檔案:hellodialog1.ui;
3. 介面類標頭檔案:ui_hellodialog1.h;
4. 載入UI的類:HelloDialog1;
5. 包含main函式檔案:main.cpp
建立好工程後,不需要修改程式碼,只需用”設計”模式開啟hellodialog1.ui,拖入Label控制元件,修改文字為“Hello World, proj-1!”;


【Emptyqmake Project】
這是一個空專案,裡面只包含專案檔案:HelloWorld-2.pro,主要分2步實現:
1. 開啟HelloWorld-2.pro,在最後一行新增:
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
2. 新建main.cpp檔案,手動新增程式碼:

#include <QApplication>
#include <QDialog>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    QLabel label(&w);
    w.resize(600
, 400); label.setText(QObject::tr("Hello World-2!")); label.move(120, 120); w.show(); return a.exec(); }

如果是手動寫程式碼,會發現一個小坑,命令補全的快捷鍵Ctrl + space很有可能被其他軟體佔用,需要手動修改下快捷鍵:
這裡寫圖片描述
工具 — 選項 — 環境 — 鍵盤 — 輸入“”comp“”,修改為自己習慣的快捷鍵,推薦:Alt+Q;

這裡再引入一種用“記事本編輯程式碼,用命令列編譯程式碼”的方式,編譯出exe檔案,步驟如下:
1. 新建資料夾CmdTest,新建檔案main.cpp,用記事本開啟並拷貝好程式碼;
2. 開啟“Qt 5.6 for Desktop(MinGW x.x.x)”,依次輸入:c:、cd c:\CmdTest、qmake -project:
執行命令之後,會生產專案檔案:CmdTest.pro
這裡寫圖片描述


3. 開啟CmdTest.pro檔案,在末尾新增:
greaterThan(QT_MAJOR_VERSION,4): QT += widgets
4. 依次執行命令:qmake和ming32-make,會在Release中生成CmdTest.exe檔案;
5. cd Release,執行exe檔案:CmdTest.exe

c:
cd c:\CmdTest
qmake -project
qmake
ming32-make
cd Release
CmdTest.exe

【Empty qmake Project + Qt Designer From】
建立一個空專案,手動建立main.cpp、helloworld-3.ui,其中main.cpp核心程式碼是載入介面資料:

#include "ui_helloworld-3.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QDialog w; // 核心程式碼
    Ui::Dialog ui;
    ui.setupUi(&w); 

    w.show();
     return a.exec();
}

如果是用“記事本編輯程式碼,用命令列編譯程式碼”的方式,編譯工程。方法跟上一個工程編譯類似,不過編譯之前先從helloworld-3.ui匯出一個類:

uic -o ui_helloworld-3.h helloworld-3.ui

大家一看會覺得比較眼熟?對,跟gcc -o xx.o xx.c類似,從“原始檔” — “目標檔案”。


【Emptyqmake Project + Qt Designer From + C++ Class】
也是首先建立一個空專案,新增檔案之後如下:
這裡寫圖片描述
這個樹形結構跟用“Qt Widgets Application”建立專案後是一樣的,此專案是模擬檔案自動生成的過程,如下:
1. 建立介面檔案模板,匯出對應的類(ui_xxx.h檔案);
2. 封住一個HelloWorld4類,通過setupUi()載入介面元素;
3. main.cpp中的main函式通過HelloWorld4中的show()方法顯示介面;
至此,就出現了用“Qt Widgets Application”建立專案的初始雛形。


【專案打包釋出】
Qt專案打包釋出跟Windows程式時型別,略懂那麼一點點,順便跟大家分享一下:
1. 首先,百度搜索“Inno Setup”,預設下載是英文版,如果想打包後的安裝程式為中文,去CSDN上下載一箇中文包就OK,附連結:http://download.csdn.net/detail/woaildh/8938657
2. 將編譯生的exe檔案和需要依賴的dll庫檔案,拷貝到同一目錄下;
3. 用Inno Setup嚮導生成一個指令碼,編譯指令碼即可生成HelloWord.exe的安裝檔案;

最基本的程式主要依賴bin目錄下6個dll檔案:libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll、Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll和platforms目錄下的qwindows.dll檔案。如果在程式中有使用其他模組,則包含對應模組的dll檔案即可。也可以用windeployqt工具來查詢:將xxx.exe檔案拷貝到一個單獨的目錄下,開啟“Qt 5.6 for Desktop(MinGW x.x.x)”, 執行命令:windeployqtc:\WinApp(路徑)後,會自動將所有依賴的檔案拷貝到WinApp目錄(自己建立的)。

關於HelloWorld專案建立的所有內容都記錄完了,如果有windows專案開發經驗的,瞭解這麼多差不多可以開始一些小專案,直接去熟悉qt介面開發了。但是為了能系統地學好Qt,後續會繼續更新qt介面相關的筆記,我學習的書籍是《Qt Creaor 快速入門 霍亞飛編著》。