創建Qt項目
1 創建Qt項目
2.1 使用向導創建
打開Qt Creator 界面選擇 New Project或者選擇菜單欄 【文件】-【新建文件或項目】菜單項
彈出New Project對話框,選擇Qt Widgets Application,
選擇【Choose】按鈕,彈出如下對話框
設置項目名稱和路徑,按照向導進行下一步,
選擇編譯套件
向導會默認添加一個繼承自CMainWindow的類,可以在此修改類的名字和基類。繼續下一步
即可創建出一個Qt桌面程序。
2.2 手動創建
添加一個空項目
選擇【choose】進行下一步。設置項目名稱和路徑 —> 選擇編譯套件 --> 修改類信息 --> 完成(步驟同上),生成一個空項目。在空項目中添加文件:在項目名稱上單擊鼠標右鍵彈出右鍵菜單,選擇【添加新文件】
彈出新建文件對話框
在此對話框中選擇要添加的類或者文件,根據向導完成文件的添加。
2.3 .pro文件
在使用Qt向導生成的應用程序.pro文件格式如下:
#------------------------------------------------- # # Project created by QtCreator 2017-11-08T15:50:51 # #------------------------------------------------- # 模塊 QT += core gui # 高於4版本, 添加 QT += widgets, 為了兼容QT4 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets # 應用程序的名字 TARGET = 01_QtTest # 指定Makefile的類型, app TEMPLATE = app # 源文件 .cpp文件 SOURCES += main.cpp\ mywidget.cpp # 頭文件 .h文件 HEADERS += mywidget.h
.pro就是工程文件(project),它是qmake自動生成的用於生產makefile的配置文件。.pro文件的寫法如下:
注釋
從“#”開始,到這一行結束。
模板變量告訴qmake為這個應用程序生成哪種makefile。下面是可供使用的選擇:TEMPLATE = app
app -建立一個應用程序的makefile。這是默認值,所以如果模板沒有被指定,這個將被使用。
lib - 建立一個庫的makefile。
vcapp - 建立一個應用程序的VisualStudio項目文件。
vclib - 建立一個庫的VisualStudio項目文件。
subdirs -這是一個特殊的模板,它可以創建一個能夠進入特定目錄並且為一個項目文件生成makefile並且為它調用make的makefile。
#指定生成的應用程序名:
TARGET = QtDemo
#工程中包含的頭文件
HEADERS += include/painter.h
#工程中包含的.ui設計文件
FORMS += forms/painter.ui
#工程中包含的源文件
SOURCES += sources/main.cpp sources/painter.cpp
#工程中包含的資源文件
RESOURCES += qrc/painter.qrc
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
這條語句的含義是,如果QT_MAJOR_VERSION大於4(也就是當前使用的Qt5及更高版本)需要增加widgets模塊。如果項目僅需支持Qt5,也可以直接添加“QT += widgets”一句。不過為了保持代碼兼容,最好還是按照QtCreator生成的語句編寫。
#配置信息
CONFIG用來告訴qmake關於應用程序的配置信息。
CONFIG += c++11 //使用c++11的特性
在這里使用“+=”,是因為我們添加我們的配置選項到任何一個已經存在中。這樣做比使用“=”那樣替換已經指定的所有選項更安全。
2.4 一個最簡單的Qt應用程序
#include "mywidget.h" #include <QApplication> // QApplication 應用程序類 // QT頭文件沒有.h // 頭文件名和類名一樣 int main(int argc, char *argv[]) { // 有且只有一個應用程序類的對象 QApplication a(argc, argv); // MyWidget繼承於QWidget, QWidget是一個窗口基類 // 所以MyWidget也是一個窗口類 // w就是一個窗口對象 MyWidget w; // w窗口對象創建默認是隱藏, 需要執行show方法 w.show(); // 讓程序一直執行, 等該用戶執行操作 // 等待事件的發生, 然后處理事件 return a.exec(); }
解釋:
Qt頭文件沒有.h后綴
Qt一個類對應一個頭文件,類名就是頭文件名
QApplication應用程序類
管理圖形用戶界面應用程序的控制流和主要設置。
是Qt的整個后台管理的命脈它包含主事件循環,在其中來自窗口系統和其它資源的所有事件處理和調度。它也處理應用程序的初始化和結束,並且提供對話管理。
對於任何一個使用Qt的圖形用戶界面應用程序,都正好存在一個QApplication 對象,而不論這個應用程序在同一時間內是不是有0、1、2或更多個窗口。
a.exec()
程序進入消息循環,等待對用戶輸入進行響應。這里main()把控制權轉交給Qt,Qt完成事件處理工作,當應用程序退出的時候exec()的值就會返回。在exec()中,Qt接受並處理用戶和系統的事件並且把它們傳遞給適當的窗口部件。
QT5 基本模塊
/* Start of mytest.cpp */ #include <QApplication> #include <QWidget> #include <QPushButton> int main(int argc, char * argv[]) { QApplication app(argc, argv); QWidget w; w.setWindowTitle(QString::fromUtf8("標題")); /* * 如果不指定父對象,對象和對象(窗口和窗口)沒有關系, 相互獨立 * a指定b為它的父對象, a放在b的上面 * 指定父對象, 有兩中方式: * 1. setParent * 2. 通過構造函數傳參 * 指定父對象, 只需要父對象顯示, 上面的子對象自動顯示 */ QPushButton b; b.setText(QString("^_^")); b.setParent(&w); // 使用setParent設置父對象 b.move(QPoint(150, 150)); QPushButton b1(&w); // 使用構造函數傳參,指定父對象 b1.setText(QString("abc")); b1.move(QPoint(50, 50)); w.resize(QSize(500, 500)); w.show(); return app.exec(); } /* End of mytest.cpp */