QT 簡介
core:核心模塊,非圖形的接口類,為其它模塊提供支持
gui:圖形用戶接口,qt5之前
widgets:圖形界面相關的類模塊 qt5之后的
database:數據庫模塊
network:網絡模塊
QT 特性
開源
(裁剪、參考代碼、學習)
優良的跨平臺特性
Qt 支持下列操作系統:Windows、Linux、MacOS、android 等等。節約人力成本。
類比 Linux 支持 intel X86、ARM、MIPS 等。
面向對象
Qt 的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對于用戶開發來說是非常方便的。Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件之間的協同工作變得十分簡單。
豐富的API
Qt 包括多達 500 個以上的 C++類,還替供基于模板的 collections,serialization,file,I/O device,directory management,date/time 類。甚至還包括正則表達式的處理功能。
大量的開發文檔
易用的開發環境
Qt 嵌入式官方案例(👈 安全鏈接,放心跳轉)
Qt 環境安裝、搭建
下載
(👆 Qt Creator下載頁面)
windows 版本選擇 mingw 版本,集成安裝包,只安裝 mingw 編譯器即可。
linux 的包以 run 后綴結尾。
mac 的包以 dmg 后綴結尾。
版本查看
Qt creator 軟件的版本:3.0.1
SDK的版本:5.2.1
編碼格式
需要改回 utf-8,否則會導致界面中文顯示不正常。
C++工程文件分離
寫一個 Person 類,有 name 和 age 兩個成員,構造方法中賦默認屬性,再提供對外的方法進行設置和輸出。
寫一個 Student 類,繼承自 Person 類,增加學號 id 和成績 score 兩個屬性,并能提供方法來設置這兩個屬性。構造方法中要能設置默認的所有屬性。
person.h
#ifndef PERSON_H
#define PERSON_H#include <iostream>
using namespace std;class Person
{
protected:string name;int age;
public:Person();void setProperty(string name, int age);virtual void getProperty();
};#endif // PERSON_H
person.cpp
#include "person.h"Person::Person()
{name = "Klaus";age = 23;
}void Person::setProperty(string name, int age)
{this->name = name;this->age = age;
}void Person::getProperty()
{cout << "Name: " << name << endl;cout << "Age: " << age << endl;
}
student.h
#ifndef STUDENT_H
#define STUDENT_H#include "person.h"class Student : public Person
{string id;float score;
public:Student();void setProperty(string name, int age, string id, float score);virtual void getProperty();
};#endif // STUDENT_H
student.cpp
#include "student.h"Student::Student()
{id = "2023052106";score = 92;
}void Student::setProperty(string name, int age, string id, float score)
{this->name = name;this->age = age;this->id = id;this->score = score;
}void Student::getProperty()
{cout << "Name: " << name << endl;cout << "Age: " << age << endl;cout << "Id: " << id << endl;cout << "Score: " << score << endl;
}
main.cpp
#include "student.h"int main()
{Person().getProperty();Person per;per.setProperty("Kol", 21);per.getProperty();cout << "--------------------" << endl;Student().getProperty();Student *stu = new Student;stu->setProperty("Kol", 21, "2023052202", 96);stu->getProperty();cout << "--------------------" << endl;// 多態:父類的指針或者引用指向子類,可以呈現子類的特性Person *p = new Student;p->getProperty();p->Person::getProperty();return 0;
}
創建 QT 的工程
xxx.pro
#-------------------------------------------------
#
# Project created by QtCreator 2023-09-26T11:20:06
#
#-------------------------------------------------#工程所需要的模塊名
QT += core gui#如果QT版本號大于5,那么需要加入widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets#生成的執行程序的名字
TARGET = qt_test
TEMPLATE = app#指定工程包含的源文件
SOURCES += main.cpp\widget.cpp#指定工程包含的頭文件
HEADERS += widget.h
main.cpp
widget.h
注意
項目構建完成后,目錄中會有一個 xxx.pro.user 的文件,這個文件存儲的是個人配置,比如個人構建路徑、編譯器路徑等等。所以如果項目是從別人那里拷貝的,必須先刪除此文件再打開項目。在打開項目之前,就需要刪掉 user 配置文件。
QT 幫助文檔
QT 所有的類 都以 Q 打頭。
打開幫助文檔方法
1、直接點 creator 里的幫助選項;
2、開始菜單輸入 ass,打開 assistant 即可;
3、光標定位到某個查找類或對象,按兩次 F1 鍵
幫助文檔的結構
頭文件、模塊需求、繼承關系
以 QLabel 為例:
Header: #include \<QLabel> // 頭文件
qmake: QT += widgets // 加載模塊
Inherits: QFrame // 父類是誰
目錄
Properties: 類特性,不能直接修改
Public Functions: 公有方法,重點關注
Public Slots: 公有槽函數,重點關注
Signals: 信號,重點關注
Detailed Description: 細節描述