第一個程序 - Hello QT
首先寫main.cpp:
#include <QApplication> #include <QMainWindow> #include <QPushButton> int main(int argc, char* argv[]) { QApplication a(argc, argv); // Qapplication表示一個應用程序,而它的成員函數exec()則用來執行程序以及消息處理
QMainWindow w; //定義一個QmainWindow主窗口對象w QPushButton b(&w); //通過&w,在主窗口上定義QpushButton按鈕對象b
b.setText("Hello QT!"); //通過b對象的成員函數setText(),設置按鈕名字為Hello QT w.show(); //顯示主窗口
return a.exec(); //通過exec()執行程序以及消息處理 }
win平台上,命令行編譯
進入main.cpp所在目錄“1.Hello QT”,輸入:
qmake -project //通過-project參數,將源碼生成(*.pro)工程文件 qmake //根據工程文件生成makefile make //根據makefile進行編譯,生成debug文件夾
接下來,進入debug文件,運行1.exe:
如果想刪除配置:
make clean //刪除配置文件,如果想再次編譯,只需要make即可 make distclean //刪除配置文件以及make,如果想再次編譯,可以通過qmake和make
linux平台上,命令行編譯
同樣輸入:
qmake -project //通過-project參數,將源碼生成(*.pro)工程文件 qmake //根據工程文件生成makefile make //根據makefile進行編譯,生成可執行文件
運行:
3.使用Qt creator編譯
注意:構建項目時,如果出現以下問題,則可能環境變量未設置好,或者環境變量的qt路徑前面有 “(” 或 “)” 字符,從而導致:Interrupt/Exception caught code = 0xc00000fd
調試
調試分為兩種
打印調試
頭文件 #include <QDebug>
比如打印5,代碼里輸入:
qDebug()<<5;
斷點調試
除了設置普通斷點外,還可以設置條件斷點(指程序滿足條件,將會暫停)
如下圖所示,在第17行處設斷點:
然后設置17行處的斷點的條件為i==3:
開始調試
從打印處可以看到,代碼運行到i=3時便暫停了:
QT creator介紹
構建(bulid)
對項目中所有文件進行編譯,最終生成可執行程序
Debug版
用來進行調試的版本,程序中會包含調試信息,所以運行效率低
Release版
最終發布的版本,無調試信息,運行效率高
QT Creator工程介紹
.pro項目描述文件
其本質就是一個簡化的Makefile,通過不同平台的qmake生成不同平台的Makefile,如下圖所示:
.pro項目描述文件介紹
基本構成如下圖所示:
高級變量如下圖所示:
其中CONFIG的常用選項有:
- debug : 構建debug版本的可執行程序
- release : 構建release版本的可執行程序
- debug_and_release : 同時構建debug和release版本
- wran_on : 盡可能多的輸出警告信息
- wran_off : 不輸出警告信息
通過上面的學習,我們就能看懂下面的.pro項目描述文件了:
QT += core gui #添加core和gui模塊(QT不僅只涉及顯示模塊,還有數據庫,多線程,網絡等等) greaterThan(QT_MAJOR_VERSION, 4): QT += widgets #如果當前版本大於4.0,則需要widgets模塊 TARGET = HelloWorld #以win平台為例,生成的程序為:HelloWorld.exe TEMPLATE = app #聲明編譯出來的是app程序,而不是庫文件 INCLUDEPATH += E:/BCC/include \ #指定頭文件路徑 E:/VC/include SOURCES += Main.cpp \ #源文件 HelloWorld.cpp HEADERS += HelloWorld.h #頭文件名 FORMS += HelloWorld.ui #指定界面描述文件 RC_FILE += MyIco.rc #指定資源文件,比如圖片 LIBS += -LE:/vlc-1.11/sdk/lib #指定外部庫 CONFIG += warn_on debug #構建debug版本,並輸出警告信息 # # if 'debug' option is set for CONFIG # CONFIG(debug) { #如果CONFIG有debug選項 DEFINES += DEBUG_LOG #則定義: #define DEBUG_LOG SOURCES += DebugLog.cpp #並添加debug相關文件 HEADERS += DebugLog.h }
注意:
- QT Creator生成的.pro.user文件,包含的是與平台相關的配置信息,與我們無關,不需要修改該文件
- 移植項目時需要刪除.pro.user這個文件,需要時,再由QT Creator自動生成即可.3
- QT MingGW版本可以在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方運行時庫。
接下來,下章繼續學習 : 2.QT-窗口組件(QWidget),QT坐標系統,初探消息處理(信號與槽)