Qt初始化工程詳解

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,當然這也會佔用更多的磁盤空間。

圖2-1 新建項目選擇Kit界面操作示意圖
圖2-1 安裝Qt時選擇Kit界面操作示意圖

        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工程項目一覽
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.hmainwindow.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-2 MainWindow窗口文件關係圖
3.3 mian主函數

        mian主函數是一個C++程序的入口,包含在 main.cpp 中, main.cpp 中定義了一個 QApplication 以及 MainWindow

  • QApplication : 管理GUI程序的控制流和主要設置,也就說系統的管理中心,比如信號與槽的響應,打開文件的窗口選擇以及調色板都是QApplication負責。
  • MainWindow : 生成主窗口,是用戶交互式操作的載體。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章