我要建設(shè)一個(gè)網(wǎng)站微信小程序開發(fā)費(fèi)用一覽表
目錄
1、QT介紹
2、QT的特點(diǎn)
3、QT模塊
3.1基本模塊
3.2擴(kuò)展模塊
4、QT工程創(chuàng)建
1.選擇應(yīng)用的窗體格式
2.設(shè)置工程的名稱與路徑
3.設(shè)置類名
4.選擇編譯器
5、QT 工程解析
xxx.pro 工程配置
xxx.h 頭文件
main.cpp 主函數(shù)
xxx.cpp 文件
6、純手工創(chuàng)建一個(gè)QT 工程
1.創(chuàng)建一個(gè)純C++ 工程
2.在xxx.pro 添加模塊
3.設(shè)計(jì)界面代碼
7、UI文件設(shè)計(jì)界面
1、QT介紹
百度百科的解釋:
Qt [1] 是一個(gè)1991年由Qt Company開發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣?#xff0c;使用特殊的代碼生成擴(kuò)展(稱為元對(duì)象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴(kuò)展,并且允許真正地組件編程。
簡單理解:QT 就是使用C++ 封裝的一個(gè)圖形界面庫。
QT是通用的C++開發(fā)界面框架(?C++ 圖形用戶界面 應(yīng)用程序開發(fā)框架。)它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣?#xff0c;使用特殊的代碼生成擴(kuò)展(稱為元對(duì)象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴(kuò)展,并且允許真正地組件編程。
歷史
1991年由QT公司開發(fā)跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架。
2008年,Qt Company科技被諾基亞公司收購,Qt也因此成為諾基亞旗下的編程語言工具。 2012年,Qt被Digia收購
版本 QT4---2009 QT5---2013 --主流版本 QT6---2021
特點(diǎn) 跨平臺(tái)、面向?qū)ο蟆⒇S富的API
應(yīng)用
咪咕音樂:咪咕音樂是中國移動(dòng)傾力打造的正版音樂播放器
WPS Office:金山軟件公司推出的辦公軟件
極品飛車:EA公司出品的著名賽車類游戲
2、QT的特點(diǎn)
QT的特點(diǎn)就是跨平臺(tái)性很強(qiáng),在QT中設(shè)計(jì)的界面可以放入不同的平臺(tái)下運(yùn)行如下圖
嵌入式: 不同芯片型號(hào)的開發(fā)板 gec6818,rk1808,rk3399 .. 桌面端: windows ,ios ,linux ... 移動(dòng)端: Android 微控制器: STM32 在QT 開發(fā)的程序可以在上述平臺(tái)上運(yùn)行!
3、QT模塊
QT本身不是一種編程語言,而是一個(gè)用標(biāo)準(zhǔn)C++編寫的跨平臺(tái)開發(fā)類庫,它對(duì)標(biāo)準(zhǔn)C++進(jìn)行了很多擴(kuò)展,引入很多新的概念和功能,比如信號(hào)與槽函數(shù)等等。同時(shí)為開發(fā)GUI應(yīng)用程序和非GUI應(yīng)用程序提供了各種類,QT類庫中各種類是以模塊的形式分類組織,一個(gè)模塊就是一個(gè)編程主題比如數(shù)據(jù)庫、網(wǎng)絡(luò)、多線程等等
3.1基本模塊
3.2擴(kuò)展模塊
4、QT工程創(chuàng)建
1.選擇應(yīng)用的窗體格式
項(xiàng)目選擇Application,也就是創(chuàng)建一個(gè)Qt應(yīng)用程序,那么右邊就是選擇以什么方式創(chuàng)建
Qt WidgetsAppliction 是基于c++語言的窗口工程
Qt Console Application 基于C++的控制臺(tái)工程
Qtfor Python-Empty 創(chuàng)建基于Python的空工程。
Qtfor Python-window 創(chuàng)建基于Python的窗口工具。
Qt QuickApplication -Empty 創(chuàng)建基于QML的快速應(yīng)用空工程。
Qt Quick Application -Scroll創(chuàng)建基于QML滑動(dòng)窗口工程。
Qt Quick Application -Stack創(chuàng)建基于QML的棧窗口工程。
Qt QuickApplication -Swipe創(chuàng)建基于QML的觸摸移動(dòng)窗口工程
2.設(shè)置工程的名稱與路徑
3.設(shè)置類名
4.選擇編譯器
5、QT 工程解析
MVC模式:經(jīng)典MVC模式中,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。其中,View的定義比較清晰,就是用戶界面。模型-視圖-控制器(MVC)
xxx.pro 工程配置
#添加QT 模塊,現(xiàn)有模塊才有類
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets#使用c++11 語法進(jìn)行工程編譯
CONFIG += c++11#開啟編譯警告
DEFINES += QT_DEPRECATED_WARNINGS#添加工程源碼
SOURCES += \main.cpp \mainwindow.cpp#添加工程頭文件
HEADERS += \mainwindow.h#添加工程的界面文件
FORMS += \mainwindow.ui#默認(rèn)的編譯器路徑
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
xxx.h 頭文件
//防止頭文件重復(fù)包含
#ifndef MAINWINDOW_H
#define MAINWINDOW_H//包含QMainWindow頭文件
#include <QMainWindow>//宏定義 作用:用于關(guān)聯(lián) XXXX.UI文件
QT_BEGIN_NAMESPACE//定義一個(gè)UI 的命名空間包含MainWindow
namespace Ui { class MainWindow; }
//宏定義
QT_END_NAMESPACE//定義一個(gè)MainWindow類公共繼承 QMainWindow
class MainWindow : public QMainWindow
{//宏定義 作用:用于實(shí)現(xiàn)信號(hào)與槽Q_OBJECTpublic://構(gòu)造函數(shù)MainWindow(QWidget *parent = nullptr);//析構(gòu)函數(shù)~MainWindow();private:Ui::MainWindow *ui; //定義一個(gè)私有成員 ui
};
#endif // MAINWINDOW_H
main.cpp 主函數(shù)
//添加用戶自定義的mainwindow.h頭文件
#include "mainwindow.h"//添加系統(tǒng)應(yīng)用頭文件
#include <QApplication>//主函數(shù)
int main(int argc, char *argv[])
{//創(chuàng)建一個(gè)應(yīng)用對(duì)象QApplication a(argc, argv);//創(chuàng)建一個(gè)自定義窗體類MainWindow w;//顯示窗體w.show();//執(zhí)行應(yīng)用return a.exec();
}
xxx.cpp 文件
//添加頭文件
#include "mainwindow.h"
//QT軟件 自動(dòng)生成窗體頭文件
#include "ui_mainwindow.h"//構(gòu)造函數(shù) 參數(shù)列表初始化 傳遞parent給父類 初始化UI指針
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{//調(diào)用ui類里面的setupUi函數(shù)ui->setupUi(this);
}//析構(gòu)函數(shù)
MainWindow::~MainWindow()
{//釋放構(gòu)造函數(shù)分配的堆空間 delete ui;
}
6、純手工創(chuàng)建一個(gè)QT 工程
1.創(chuàng)建一個(gè)純C++ 工程
2.在xxx.pro 添加模塊
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle#添加QT 3大模塊
QT += core gui widgetsSOURCES += \main.cppQT本身不是一種編程語言,而是一個(gè)用標(biāo)準(zhǔn)C++編寫的跨平臺(tái)開發(fā)類庫,它對(duì)標(biāo)準(zhǔn)C++進(jìn)行了很多擴(kuò)展,引入很多新的概念和功能,比如信號(hào)與槽函數(shù)等等。同時(shí)為開發(fā)GUI應(yīng)用程序和非GUI應(yīng)用程序提供了各種類,QT類庫中各種類是以模塊的形式分類組織,一個(gè)模塊就是一個(gè)編程主題,比如數(shù)據(jù)庫、網(wǎng)絡(luò)、多線程等等。Qt Core模塊:是QT類庫的核心,所有其他模塊都依賴這個(gè)模塊。
Qt Gui模塊:提供GUI程序的基本功能。
Qt Network模塊:提供跨平臺(tái)的網(wǎng)絡(luò)功能。
Qt Widgets模塊:提供創(chuàng)建用戶界面的功能。
3.設(shè)計(jì)界面代碼
創(chuàng)建QT應(yīng)用對(duì)象QApplication,創(chuàng)建窗體對(duì)象QMainWindow,創(chuàng)建標(biāo)簽對(duì)象QLabel
需要包含對(duì)對(duì)應(yīng)的頭文件#include<QApplication><QMainWindow><QLabel>
退出的時(shí)候需要使用應(yīng)用對(duì)象.exec()#include <iostream>using namespace std;//添加QT應(yīng)用頭文件
#include <QApplication>//添加自帶窗體頭文件
#include <QMainWindow>//添加標(biāo)簽頭文件
#include <QLabel>int main(int argc, char **argv)
{//創(chuàng)建一個(gè)QT應(yīng)用對(duì)象QApplication a(argc,argv);cout << "Hello World!" << endl;//創(chuàng)建一個(gè)窗體對(duì)象 ,必須要在創(chuàng)建窗體前創(chuàng)建一個(gè)應(yīng)用,因?yàn)樗写绑w都是在應(yīng)用上面的QMainWindow w;//創(chuàng)建一個(gè)標(biāo)簽對(duì)象,w對(duì)象是他的父親QLabel lb(&w);lb.setText("今天真涼快"); //設(shè)置標(biāo)簽的內(nèi)容lb.setGeometry(50,50,100,100); //設(shè)置標(biāo)簽的位置lb.show(); //顯示標(biāo)簽//顯示窗體w.show();//一直執(zhí)行return a.exec();}
7、UI文件設(shè)計(jì)界面
UI的原理:當(dāng)用戶修改UI界面文件后,界面未發(fā)生任何改變,那么就要自己去修改 ui_xxxx.h 文件