0. 寫在前面爲什麼想記錄這篇博文⁉️
由於項目原因,需要 重新 使用Qt,距離接觸Qt大概過了半年左右,當初也僅僅是接觸一下,並沒有深究,再次使用,發現對初始化工程十分的陌生,又得花費蠻多時間重新學習,希望通過這篇博文記錄起來,加深記憶的同時方便以後複習。寫博客的意義其實就是再此!記錄📝 和分享👪 !
1. 使用的開發環境
我目前使用的開發環境是Windows + Qt Creator,當然你也可以使用其他的開發環境,比如Windows + Qt Creator、Linux(Ubuntu) + Qt Creator以及Windows + VS等,這裏主要講的使用Qt Creator開發時項目,由於Qt是跨平臺的,不管你是用的是Windows系統還是Linux系統都是一樣的。
2.新建初始化工程
Qt項目構成比較複雜,以工程的結構組成,爲了更方便的構建初始化項目,Qt Creator提供一個可視化的新建項目嚮導,主要包括定義 項目的名稱 、 選擇項目的存儲位置 、選擇Kits 以及 項目繼承的基類 。
項目的名稱以及存儲位置沒啥好說的,主要解釋一下Kit以及項目繼承的基類。
2.1 Kit選擇
Kit爲構成套件,裏面包含的主要是編譯工具,比如我的Kit選擇只有 MinGW 64-bits圖2-1,這個主要是當初安裝Qt時勾選的安裝組件,我們可以勾選安裝更多種類的組件適應不同環境下的開發圖2-2,當然這也會佔用更多的磁盤空間。
MinGW 指的是 Minimalist GNU for Windows , 簡約版的Windows平臺下使用的GNU套件,包含了編譯器和標準庫。對於 MSVC 則是Qt爲微軟(Microsoft,MS)開發的VC編譯器,方便Qt可以使用宇宙最強Visual Studio進行Qt的開發,畢竟寫C++的開發者大多使用VS,用戶基數非常大。
2.2 工程繼承的基類
Qt工程繼承的基類有三種:QMainWindow、QWidget以及QDialog。 如何選擇繼承的基類需要了解這三者的區別:
- QMainWindow通常被用來做主應用程序界面,因爲他提供了菜單條(menuBar)、工具條(maintoolBar)、狀態條(statusBar)以及中心顯示區(centralWidget),可以適應更復雜的操作要求。
- QWidget是所有用戶界面的基類,我們可以在上面放置基本組件(按鍵(Button)、文本框(Label)等),QMainWindow的中心顯示區就是一個Qwidget。
- QDialog爲對話框基類,對話框通常用來做短期任務的操作界面,通常不用來作主界面。
3. 工程文件簡述選擇QMainWindow作爲工程繼承的基類
3.1 Demo.pro
Qt工程中會自動生成一個 .pro 文件, .pro 文件屬於項目管理文件,定義了項目的基本信息,利用qmake生成對應的makefile文件,makefile文件是自動化編譯腳本,適合用在複雜的工程編譯當中,提高編譯效率。
# Project created by QtCreator 2020-04-29T12:27:43
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Demo
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
###對注視和部分代碼進行刪減,有利於博文閱讀
這裏我們主要關注第一行:
QT += core gui
這裏主要定義了引用的模塊,core gui是必須的而且包含了大部分的內容,爲什麼這樣做?主要是爲了提供用戶的靈活性,用戶可以自行裁剪功能模塊,提高編譯速度。例如我們要引用Qtchart就需要在這句話下面添加:
QT += core gui
QT += charts
3.2 MainWindow窗口文件
在工程項目列表中,我們可以看到 mainwindow.h 、mainwindow.cpp 以及 mainwindow.ui 三個文件,
mainwindow.h 以及 mainwindow.cpp 主要是對 MainWindow類 相關成員的 定義 與 實現 ;mainwindow.ui 是對窗口的佈局文件,是xml文件。
我們可能會產生一個疑問❓ ,前兩者和後者是如何聯繫起來的。這裏是通過引入另一箇中間文件實現的: ui_mianwindow.h 。這個中間文件並不出現在工程列表中,是由xml文件生成的,我們也可以看到在 mainwindow.cpp 也有引用該頭文件。
-
mainwindow.h、mianwindow.cpp : MainWindow類成員的定義與實現;
-
mainwindow.ui : 佈局文件,可視化編輯界面;
-
ui_mainwindow.h : 通過佈局文件生成的頭文件,包括界面對象成員的定義、創建界面方法的實現以及命名空間的定義。
3.3 mian主函數
mian主函數是一個C++程序的入口,包含在 main.cpp 中, main.cpp 中定義了一個 QApplication 以及 MainWindow 。
- QApplication : 管理GUI程序的控制流和主要設置,也就說系統的管理中心,比如信號與槽的響應,打開文件的窗口選擇以及調色板都是QApplication負責。
- MainWindow : 生成主窗口,是用戶交互式操作的載體。