0. 關于Qt
Qt是C++的實踐課,之前在C++中學習的語法可以有具體的應用場景。Qt的代碼量很大,不要死記硬背,學會查詢文檔的能力更加重要。
建議提升一下相關單詞的儲備量:
1. Qt是什么?
Qt是一個基于C++語言的圖形用戶界面(GUI)框架,但是Qt不僅僅可以進行界面開發,還包含很多傳統編程的功能:多線程、訪問數據庫、圖像處理、音視頻處理、網絡通信、文件IO......
下面的程序都使用 Qt 開發:WPS、YY語音、Skype、豆瓣電臺、蝦米音樂、淘寶助理、千牛、暴雪的戰網客戶端、VirtualBox、Opera、咪咕音樂、Google地圖、Adobe Photoshop Album 、微信(4.0以上)等。
Qt的開發產品可以分為三類:
1. 純軟件產品
例如上面的一些知名軟件產品。
2. 嵌入式:上位機
3. 嵌入式:自帶屏幕的硬件
2. Qt優勢(掌握)
Qt最大的優勢就是跨平臺特性:一次編程,到處編譯。
面向對象開發
豐富的API(應用程序接口)和對應的開發文檔
易用的開發環境
開源(開源刺客)
3. 新建項目
在新建項目之前,需要先把之前C++設置的編碼改回UTF-8,設置完成后重啟Qt Creator。
下面是新建并運行一個Qt項目的操作步驟:
1. 點擊
2. 直接使用默認的項目類型。
3. 設置項目名稱和路徑。
4. 使用默認的編譯器。
5. 把基類改為QDialog
6. 項目管理界面點擊完成。
7. 點擊
編譯并運行,自帶程序會有一個彈窗。
4. 項目結構(掌握)
工作目錄:即創建項目時選擇的目錄,用來存放項目開發時的各種工程文件,包括源代碼、貼圖、設計文件等。
構建目錄:存放編譯過程中生成的文件和最終的可執行程序。
打開工作目錄,可以看到項目中自帶的各種開發對應的文件:
● .pro文件
用于配置項目參數,還可以用于項目導入。
#-------------------------------------------------
#
# Project created by QtCreator 2025-04-23T09:31:34
#
#-------------------------------------------------# 在當前的項目中加入core模塊和gui模塊
QT += core gui# 如果當前項目的版本大于4,則添加widgets模塊
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets# 項目編譯的可執行文件名稱
TARGET = Day1_24121_Helloworld
# 項目的模板為應用程序(別動)
TEMPLATE = app# 項目中包含的源文件
SOURCES += main.cpp\dialog.cpp# 項目中包含的頭文件
HEADERS += dialog.h# 項目中包含的界面文件
FORMS += dialog.ui
在確認工作目錄的路徑不包含中文的前提下,雙擊.pro文件可以導入項目。
● .user文件
不在Qt Creator中顯示,但是項目構建后,會在工作目錄中自動生成,內部包含了當前項目在當前設備中運行的環境信息,不同的設備此文件不通用,在導入項目之前需要刪除此文件。
上面三個文件同屬一個類:Dialog
● .cpp源文件用于編寫類的定義
#include "dialog.h"
#include "ui_dialog.h"/*** @brief Dialog::Dialog 構造函數* @param parent*/
Dialog::Dialog(QWidget *parent) :
QDialog(parent), // 透傳構造
ui(new Ui::Dialog) // 構造初始化列表
{ui->setupUi(this);
}/*** @brief Dialog::~Dialog 析構函數*/
Dialog::~Dialog()
{delete ui; // 釋放成員變量的堆內存
}
● .h頭文件用于編寫類的聲明
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog> // 引入對話框窗口的基類頭文件namespace Ui {class Dialog;
}/*** @brief The Dialog class 自定義對話框窗口類*/
class Dialog : public QDialog
{
Q_OBJECTpublic:
explicit Dialog(QWidget *parent = 0); // 構造函數
~Dialog(); // 析構函數private:
Ui::Dialog *ui; // 成員變量
};#endif // DIALOG_H
● .ui文件用于編寫類的界面
● main.cpp
主程序文件,內部包含主函數,即程序運行的入口。
#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{// 創建了一個QApplication對象(管家)QApplication a(argc, argv);// 創建一個自定義窗口類對象Dialog w;// 展示窗口w.show();return a.exec(); // 進入主事件循環
}
5. 查詢文檔(掌握)
Qt的使用必須依賴于文檔,以下是三種查詢文檔的方法:
1. 在Windows中打開Assistant程序。
2. 在Qt Creator中點擊“幫助”
3. 在Qt Creator中光標定位到要查詢的內容,雙擊鍵盤F1
查詢的類首頁結構如下:
注意,當程序運行出現Permission Denied信息時,表示當前項目已經有一個實例在運行了,需要關閉正在運行的實例,重新運行。
如果找不到運行窗口,就點擊停止按鈕。
6. 調試信息(掌握)
前期學習盡量簡化項目,因此在創建項目時,先不選擇界面文件。
在Qt中使用QDebug輸出調試信息,QDebug可以把信息在后臺顯示,用戶在前臺不可見,而C/C++沒有前后臺的概念。
dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug> // 調試信息類class Dialog : public QDialog
{
Q_OBJECTpublic:
Dialog(QWidget *parent = 0);
~Dialog();
};#endif // DIALOG_H
dialog.cpp
#include "dialog.h"Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{// Qt中函數和變量使用小駝峰命名法// 第一個單詞全小寫,后面的單詞首字母大寫qDebug() << "你好" << "世界"; // <<之間自動空格qDebug() << "構造函數"; // 分號之后自動換行
}Dialog::~Dialog()
{qDebug() << "析構函數";
}
main.cpp
#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}