1.Qt概述
1.1 什么是Qt
Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它為應(yīng)用程序開發(fā)者提供建立藝術(shù)級(jí)圖形界面所需的所有功能皇钞。它是完全面向?qū)ο蟮牡棵冢苋菀讛U(kuò)展,并且允許真正的組件編程鹅士。
1.2?Qt的發(fā)展史
1991年 Qt最早由奇趣科技開發(fā)
1996年 進(jìn)入商業(yè)領(lǐng)域券躁,它也是目前流行的Linux桌面環(huán)境KDE的基礎(chǔ)
2008年 奇趣科技被諾基亞公司收購(gòu),Qt稱為諾基亞旗下的編程語(yǔ)言
2012年 Qt又被Digia公司收購(gòu)
2014年4月 跨平臺(tái)的集成開發(fā)環(huán)境Qt Creator3.1.0發(fā)布掉盅,同年5月20日配發(fā)了Qt5.3正式版也拜,至此Qt實(shí)現(xiàn)了對(duì)iOS、Android趾痘、WP等各平臺(tái)的全面支持慢哈。
當(dāng)前Qt最新版本為 5.5.0
1.3 支持的平臺(tái)
☆Windows – XP、Vista永票、Win7卵贱、Win8滥沫、Win2008、Win10
☆Uinux/X11 – Linux键俱、Sun Solaris兰绣、HP-UX、Compaq Tru64 UNIX编振、IBM AIX缀辩、SGI IRIX、FreeBSD踪央、BSD/OS臀玄、和其他很多X11平臺(tái)
☆Macintosh – Mac OS X
☆Embedded – 有幀緩沖支持的嵌入式Linux平臺(tái),Windows CE
1.4?Qt版本
Qt按照不同的版本發(fā)行畅蹂,分為商業(yè)版和開源版
●商業(yè)版
為商業(yè)軟件提供開發(fā)健无,他們提供傳統(tǒng)商業(yè)軟件發(fā)行版,并且提供在商業(yè)有效期內(nèi)的免費(fèi)升級(jí)和技術(shù)支持服務(wù)液斜。
●開源的LGPL版本:
為了開發(fā)自有而設(shè)計(jì)的開放源碼軟件累贤,它提供了和商業(yè)版本同樣的功能,在GNU通用公共許可下旗唁,它是免費(fèi)的畦浓。
1.5 Qt的安裝
下載地址官網(wǎng):http://download.qt.io/archive/qt/
Linux Host
Qt 5.5.0 for Linux 32-bit (535 MB) (info)
Qt 5.5.0 for Linux 64-bit (532 MB) (info)
Qt 5.5.0 for Android (Linux 64-bit, 605 MB) (info)
Qt 5.5.0 for Android (Linux 32-bit, 608 MB) (info)
Qt 5.5.0 for Mac (588 MB) (info)
Qt 5.5.0 for Android (Mac, 652 MB) (info)
Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)
Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)
Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)
Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)
Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)
OS X Host
Qt 5.5.0 for Mac (588 MB) (info)
Qt 5.5.0 for Android (Mac, 652 MB) (info)
Qt 5.5.0 for Android and iOS (Mac, 1.7 GB) (info)
Windows Host
Qt 5.5.0 for Windows 64-bit (VS 2013, 650 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2013, 633 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2012, 587 MB) (info)
Qt 5.5.0 for Windows 32-bit (VS 2010, 585 MB) (info)
Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) (info)--我采用的
Qt 5.5.0 for Android (Windows 32-bit, 1.0 GB) (info)
Qt 5.5.0 for Windows RT 32-bit (621 MB) (info)
Qt對(duì)不同的平臺(tái)提供了不同版本的安裝包,可根據(jù)實(shí)際情況自行下載安裝
MinGW32 --> Minimalist GNU for Windows 32检疫。
安裝過程:
很容易蟀俊!一路nextO⑻谩!
1.6 Qt的優(yōu)點(diǎn)
●跨平臺(tái)阔逼,幾乎支持所有的平臺(tái)
●接口簡(jiǎn)單论巍,容易上手烛谊,學(xué)習(xí)QT框架對(duì)學(xué)習(xí)其他框架有參考意義。
●一定程度上簡(jiǎn)化了內(nèi)存回收機(jī)制
●開發(fā)效率高嘉汰,能夠快速的構(gòu)建應(yīng)用程序丹禀。
●有很好的社區(qū)氛圍,市場(chǎng)份額在緩慢上升鞋怀。
●可以進(jìn)行嵌入式開發(fā)双泪。
1.7為什么學(xué)習(xí)Qt
1)學(xué)習(xí)GUI編程,市場(chǎng)上任何一款產(chǎn)品幾乎都帶圖形界面密似,市場(chǎng)上很火的Android焙矛、IOS編程無非也是GUI app編程,GUI編程都是差不多残腌,學(xué)習(xí)Qt后再學(xué)習(xí)Android村斟、IOS贫导,那是 So easy。就算不學(xué)習(xí)Android蟆盹、IOS孩灯,由于Qt跨平臺(tái)特性,通過Qt寫的程序可以在Android逾滥、IOS平臺(tái)上運(yùn)行钱反。
2)鍛煉編程能力,GUI編程比后臺(tái)編程更能鍛煉人匣距,因?yàn)槟愠撕诵臄?shù)據(jù)處理外面哥,還需要協(xié)調(diào)界面,同時(shí)懂得前端和后臺(tái)編程毅待,才能更好地寫好程序尚卫。
3)為了更好地使用C++,學(xué)習(xí)Qt的框架(Qt是C++實(shí)現(xiàn)的應(yīng)用程序框架)尸红,很多游戲吱涉、后臺(tái)服務(wù)器框架都是使用C++實(shí)現(xiàn)。
1.8如何學(xué)習(xí)Qt
第一外里,要學(xué)好C++基礎(chǔ)怎爵,這樣函數(shù)和類用起來就很簡(jiǎn)單了;第二盅蝗,要會(huì)使用幫助鳖链,IDE(Qt Creator)一般都帶有幫助文件;第三墩莫,要會(huì)看文檔芙委,文檔里面會(huì)包含全部的類和函數(shù)狂秦;只要會(huì)看文檔灌侣,就知道了函數(shù)或者類的作用,就會(huì)用侧啼。這個(gè)是不需要記的。
2、 創(chuàng)建Qt項(xiàng)目
你還在為沒有學(xué)習(xí)平臺(tái)而苦惱嗎?你還在為沒有學(xué)習(xí)資料而煩心嗎铭污?你還在為沒人指導(dǎo)而擔(dān)憂嗎?可以私信小編 C++燎潮,為你提供學(xué)習(xí)的平臺(tái)和資料。
2.1?使用向?qū)?chuàng)建
打開Qt Creator 界面選擇 New Project或者選擇菜單欄 【文件】-【新建文件或項(xiàng)目】菜單項(xiàng)
彈出New Project對(duì)話框吕粹,選擇Qt Widgets Application,
選擇【Choose】按鈕,彈出如下對(duì)話框
設(shè)置項(xiàng)目名稱和路徑凶伙,按照向?qū)нM(jìn)行下一步偏竟,
選擇編譯套件
向?qū)?huì)默認(rèn)添加一個(gè)繼承自CMainWindow的類,可以在此修改類的名字和基類宛官。繼續(xù)下一步
即可創(chuàng)建出一個(gè)Qt桌面程序胡控。
2.2?手動(dòng)創(chuàng)建
添加一個(gè)空項(xiàng)目
選擇【choose】進(jìn)行下一步庇绽。設(shè)置項(xiàng)目名稱和路徑 —> 選擇編譯套件 --> 修改類信息 --> 完成(步驟同上)夏跷,生成一個(gè)空項(xiàng)目亲雪。在空項(xiàng)目中添加文件:在項(xiàng)目名稱上單擊鼠標(biāo)右鍵彈出右鍵菜單,選擇【添加新文件】
彈出新建文件對(duì)話框
在此對(duì)話框中選擇要添加的類或者文件销部,根據(jù)向?qū)瓿晌募奶砑印?/b>
代碼:
HelloQt.pro
QT += widgets SOURCES += main.cpp
main.cpp
按 Ctrl+C 復(fù)制代碼
按 Ctrl+C 復(fù)制代碼
總結(jié):
●1>. 在窗口中添加按鈕
▲類名: QPushButton
▲設(shè)置按鈕顯示的內(nèi)容: setText
▲移動(dòng)按鈕位置: move
▲按鈕設(shè)置父窗口:setParent
▲設(shè)置窗口的大小:resize() resizeFixed()
●2>. Qt的坐標(biāo)體系:
▲坐標(biāo)原點(diǎn): 左上角
▲x軸延伸的方向: 向右遞增
▲y軸延伸的方向: 向下遞增
●3>. Qt內(nèi)存回收機(jī)制
滿足什么條件的類不需要用戶手動(dòng)釋放內(nèi)存?
▲1. 從QObject類直接或間接派生
▲2. 給直接或間接派生出的類, 指定父對(duì)象
2.3?.pro文件
在使用Qt向?qū)傻膽?yīng)用程序.pro文件格式如下:
按 Ctrl+C 復(fù)制代碼
按 Ctrl+C 復(fù)制代碼
.pro就是工程文件(project),它是qmake自動(dòng)生成的用于生產(chǎn)makefile的配置文件盛垦。.pro文件的寫法如下:
●注釋
從“#”開始浅侨,到這一行結(jié)束。
●模板變量告訴qmake為這個(gè)應(yīng)用程序生成哪種makefile甥厦。下面是可供使用的選擇:TEMPLATE?= app
▲app -建立一個(gè)應(yīng)用程序的makefile疚鲤。這是默認(rèn)值锥累,所以如果模板沒有被指定,這個(gè)將被使用集歇。
▲ lib - 建立一個(gè)庫(kù)的makefile桶略。
▲ vcapp - 建立一個(gè)應(yīng)用程序的VisualStudio項(xiàng)目文件。
▲ vclib - 建立一個(gè)庫(kù)的VisualStudio項(xiàng)目文件诲宇。
▲ subdirs -這是一個(gè)特殊的模板际歼,它可以創(chuàng)建一個(gè)能夠進(jìn)入特定目錄并且為一個(gè)項(xiàng)目文件生成makefile并且為它調(diào)用make的makefile。
● #指定生成的應(yīng)用程序名:
TARGET = QtDemo
● #工程中包含的頭文件
HEADERS += include/painter.h
●#工程中包含的.ui設(shè)計(jì)文件
FORMS += forms/painter.ui
●#工程中包含的源文件
SOURCES += sources/main.cpp sources/painter.cpp
●#工程中包含的資源文件
RESOURCES += qrc/painter.qrc
●?greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
這條語(yǔ)句的含義是姑蓝,如果QT_MAJOR_VERSION大于4(也就是當(dāng)前使用的Qt5及更高版本)需要增加widgets模塊鹅心。如果項(xiàng)目僅需支持Qt5,也可以直接添加“QT += widgets”一句纺荧。不過為了保持代碼兼容巴帮,最好還是按照QtCreator生成的語(yǔ)句編寫溯泣。
●#配置信息
CONFIG用來告訴qmake關(guān)于應(yīng)用程序的配置信息。
CONFIG += c++11 //使用c++11的特性
在這里使用“+=”榕茧,是因?yàn)槲覀兲砑游覀兊呐渲眠x項(xiàng)到任何一個(gè)已經(jīng)存在中。這樣做比使用“=”那樣替換已經(jīng)指定的所有選項(xiàng)更安全客给。
2.4?一個(gè)最簡(jiǎn)單的Qt應(yīng)用程序
按 Ctrl+C 復(fù)制代碼
按 Ctrl+C 復(fù)制代碼
解釋:
★Qt頭文件沒有.h后綴
★Qt一個(gè)類對(duì)應(yīng)一個(gè)頭文件用押,類名就是頭文件名
★QApplication應(yīng)用程序類
●★管理圖形用戶界面應(yīng)用程序的控制流和主要設(shè)置。
●★ 是Qt的整個(gè)后臺(tái)管理的命脈它包含主事件循環(huán)靶剑,在其中來自窗口系統(tǒng)和其它資源的所有事件處理和調(diào)度蜻拨。它也處理應(yīng)用程序的初始化和結(jié)束,并且提供對(duì)話管理桩引。
●★ 對(duì)于任何一個(gè)使用Qt的圖形用戶界面應(yīng)用程序缎讼,都正好存在一個(gè)QApplication 對(duì)象,而不論這個(gè)應(yīng)用程序在同一時(shí)間內(nèi)是不是有0坑匠、1血崭、2或更多個(gè)窗口。
★a.exec()
程序進(jìn)入消息循環(huán)厘灼,等待對(duì)用戶輸入進(jìn)行響應(yīng)夹纫。這里main()把控制權(quán)轉(zhuǎn)交給Qt,Qt完成事件處理工作设凹,當(dāng)應(yīng)用程序退出的時(shí)候exec()的值就會(huì)返回舰讹。在exec()中,Qt接受并處理用戶和系統(tǒng)的事件并且把它們傳遞給適當(dāng)?shù)拇翱诓考?/b>
3闪朱、QtCreator常用快捷鍵
有的電腦是 Fn+...
1)幫助文件:F1 (光標(biāo)在函數(shù)名字或類名上月匣,按 F1 即可跳轉(zhuǎn)到對(duì)應(yīng)幫助文檔,查看其詳細(xì)用法)
2).h 文件和對(duì)應(yīng).cpp 文件切換:F4
3)編譯并運(yùn)行:Ctrl + R
4)函數(shù)聲明和定義(函數(shù)調(diào)用和定義)切換:F2
5)代碼注釋取消注釋:Ctrl + / (選中代碼再按快捷鍵)
6)字體變大變蟹茏恕:Ctrl + 鼠標(biāo)滾輪向上向下
7)移動(dòng)代碼:選中所要移動(dòng)的代碼 -> 按住 ctrl + shift -> 鍵盤方向鍵
8)查找替換關(guān)鍵字:ctrl + f
9)快速打開代碼所在目錄:編輯模式下 -> 選中項(xiàng)目文件 -> 右擊 -> 選擇“顯示包含的目錄”锄开,即可顯示項(xiàng)目所在目錄(此方法同樣可以打開代碼文件所在目錄)
幫助文檔的使用:
比較詳細(xì)的鏈接:https://blog.csdn.net/tennysonsky/article/details/48471805
我們使用 Qt 幫助文檔,主要分為這么幾步:
1)類使用的相關(guān)介紹
2)查看所用部件(類)的相應(yīng)成員函數(shù)(功能胀蛮,參數(shù)院刁,返回值)
3)查看部件的信號(hào)
4)查看部件的事件(所對(duì)應(yīng)的虛函數(shù)如何編寫)
所要查看的幾個(gè)重要信息:
公有成員函數(shù):操作部件屬性的相關(guān)函數(shù)。
公有槽函數(shù):Qt類中已經(jīng)定義好的槽函數(shù)粪狼,直接可與信號(hào)相連接退腥。
信號(hào):軟中斷,如按下按鈕觸發(fā) pressed() 信號(hào)等再榄。
保護(hù)成員函數(shù):通常事件所對(duì)應(yīng)的虛函數(shù)放在此處狡刘。
事件:常用事件,如操作鼠標(biāo)觸發(fā)的鼠標(biāo)事件困鸥。
1)當(dāng)然嗅蔬,我們可以直接在“幫助”模式下的“索引”輸入框里輸入所需查看的類:
2)查看所用部件(類)的相應(yīng)成員函數(shù)(功能剑按,參數(shù),返回值)
查看所用部件的相應(yīng)成員函數(shù)( 本身的成員函數(shù)澜术,繼承過來的成員函數(shù) )艺蝴,主要是為了查看這個(gè)成員函數(shù)如何使
用,包括函數(shù)的功能鸟废,參數(shù)猜敢,返回值。
4盒延、案例代碼:
第一個(gè):
01_QtTest.pro
#模塊QT += core gui#高于4版本缩擂,添加 QT += widgets ,為了兼容Qt4greaterThan(QT_MAJOR_VERSION, 4): QT += widgets#應(yīng)用程序的名字TARGET = mike#指定makefile的類型, appTEMPLATE = app#源文件 .cpp文件SOURCES += main.cpp mywidget.cpp#頭文件 .h文件HEADERS += mywidget.h
main.cpp
#include "mywidget.h"http://QApplication應(yīng)用程序類//Qt頭文件沒有.h//頭文件和類名一樣#include int main(int argc, char *argv[]){ //有且只有一個(gè)應(yīng)用程序類的對(duì)象 QApplication a(argc, argv); //MyWidget繼承與QWidget添寺, QWidget是一個(gè)窗口基類 //所以MyWidget也是窗口類 //w就是一個(gè)窗口 MyWidget w; //窗口創(chuàng)建默認(rèn)是隱藏胯盯,需要人為顯示 w.show(); //讓程序一直執(zhí)行,等待用戶操作 //等待事件的發(fā)生 a.exec(); return 0;}
mywidget.cpp
#include "mywidget.h"MyWidget::MyWidget(QWidget *parent) : QWidget(parent){}MyWidget::~MyWidget(){}
mywidget.h
#ifndef MYWIDGET_H#define MYWIDGET_H#include class MyWidget : public QWidget{ //Q_OBJECT //信號(hào)與槽的時(shí)候需要public: MyWidget(QWidget *parent = 0); ~MyWidget();};#endif // MYWIDGET_H
你還在為沒有學(xué)習(xí)平臺(tái)而苦惱嗎计露?你還在為沒有學(xué)習(xí)資料而煩心嗎博脑?你還在為沒人指導(dǎo)而擔(dān)憂嗎?可以私信小編 C++薄坏,為你提供學(xué)習(xí)的平臺(tái)和資料趋厉。