當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Qt入門(mén)介紹
Qt的基本概念——什么是Qt?
Qt是一個(gè)跨平臺(tái)的c++圖形用戶(hù)界面應(yīng)用程序框架,它為應(yīng)用程序開(kāi)發(fā)者提供建立藝術(shù)級(jí)圖形界面所需的所有功能。它是面向?qū)ο蟮模苋菀讛U(kuò)展。并且允許真正的組件編程。
Qt的起源和發(fā)展史
1991年Qt最早由奇趣科技開(kāi)發(fā);1996年進(jìn)入商業(yè)領(lǐng)域,也是目前流行的linux桌面環(huán)境KDE的基礎(chǔ);2008年奇趣科技被諾基亞公司收購(gòu),qt稱(chēng)為諾基亞旗下的編程語(yǔ)言;2012年qt又被Digia公司收購(gòu);2014年4月,跨平臺(tái)的集成開(kāi)發(fā)環(huán)境qt Creator3.1.0發(fā)布,同5月20日配發(fā)了qt5.3正式版,至此qt實(shí)現(xiàn)了對(duì)IOS、Android、WP等各平臺(tái)的全面支持 。
Qt所支持的平臺(tái)
Windows - XP、Vista、Win7、Win8、Win2008、win10;
Uinux - linux、Sun Solaris、HP-UX、IBM AIX 、SGI IRIX 、FreeBSD 、BSD/OS;
Macintosh - Mac OS X;
Embedded – 有幀緩沖支持的嵌入式linux平臺(tái),Windows CE;
Qt中的信號(hào)和槽
信號(hào)和槽是Qt特有的信息傳輸機(jī)制,是Qt設(shè)計(jì)程序的重要基礎(chǔ),它可以讓互不干擾的對(duì)象建立一種聯(lián)系。
信號(hào)槽是 Qt 框架引以為豪的機(jī)制之一。所謂信號(hào)槽,實(shí)際就是觀察者模式。當(dāng)某個(gè)事件發(fā)生之后,比如,按鈕檢測(cè)到自己被點(diǎn)擊了一下,它就會(huì)發(fā)出一個(gè)信號(hào)(signal)。這種發(fā)出是沒(méi)有目的的,類(lèi)似廣播。如果有對(duì)象對(duì)這個(gè)信號(hào)感興趣,它就會(huì)使用連接(connect)函數(shù),意思是,將想要處理的信號(hào)和自己的一個(gè)函數(shù)(稱(chēng)為槽(slot))綁定來(lái)處理這個(gè)信號(hào)。也就是說(shuō),當(dāng)信號(hào)發(fā)出時(shí),被連接的槽函數(shù)會(huì)自動(dòng)被回調(diào)。這就類(lèi)似觀察者模式:當(dāng)發(fā)生了感興趣的事件,某一個(gè)操作就會(huì)被自動(dòng)觸發(fā)。
槽的本質(zhì)是類(lèi)的成員函數(shù),其參數(shù)可以是任意類(lèi)型的。和普通C++成員函數(shù)幾乎沒(méi)有區(qū)別,它可以是虛函數(shù);也可以被重載;可以是公有的、保護(hù)的、私有的、也可以被其他C++成員函數(shù)調(diào)用。唯一區(qū)別的是:槽可以與信號(hào)連接在一起,每當(dāng)和槽連接的信號(hào)被發(fā)射的時(shí)候,就會(huì)調(diào)用這個(gè)槽。
槽函數(shù)函數(shù)的定義及注意事項(xiàng)
槽函數(shù)可以是任意的成員函數(shù)、普通全局函數(shù)、靜態(tài)函數(shù);槽函數(shù)需要和信號(hào)一致(參數(shù)、返回值),由于信號(hào)都是沒(méi)有返回值的,所以槽函數(shù)也一定沒(méi)有返回值。
創(chuàng)建一個(gè)最簡(jiǎn)單的Qt程序,分析Qt程序中自動(dòng)創(chuàng)建的文件
在.pro文件中:
#模塊
QT += core gui
#高于qt4的版本,添加QT += widgets,為了兼容qt4
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
#應(yīng)用程序的名字
TARGET = qt1
#指定makefile類(lèi)型,
TEMPLATE = app
在main.cpp中:
//一個(gè)應(yīng)用程序類(lèi)的對(duì)象;
QApplication a(argc, argv);
//Widget繼承與QWidget類(lèi),QWidget是一個(gè)窗口基類(lèi)
//所以Widget是一個(gè)窗口類(lèi)
//w就是一個(gè)窗口
Widget w;
//窗口是默認(rèn)隱藏的,需要人為的顯示
w.show();
//讓程序一直執(zhí)行,使用a對(duì)象的exec函數(shù),等待用戶(hù)操作。
return a.exec();
若想自己新建項(xiàng)目,打開(kāi)QTCREATOR,在文件菜單欄選擇新建文件或項(xiàng)目或點(diǎn)擊菜單欄下的New Project,左側(cè)一欄選擇項(xiàng)目為Application(應(yīng)用程序),中間一欄選擇Qt Widgets Application,右側(cè)一欄為當(dāng)前項(xiàng)目類(lèi)型的簡(jiǎn)介。然后點(diǎn)擊右下角的choose,設(shè)置項(xiàng)目名(英文)和項(xiàng)目路徑,點(diǎn)擊下一步,選擇開(kāi)發(fā)組件(默認(rèn)有選擇),點(diǎn)擊下一步,推薦取消選擇創(chuàng)建界面(如果選擇了創(chuàng)建界面,項(xiàng)目會(huì)帶一個(gè).ui文件,支持使用拖動(dòng)控件方式設(shè)計(jì)界面),使用純代碼方式設(shè)計(jì)界面,點(diǎn)擊完成則創(chuàng)建項(xiàng)目成功。
注意事項(xiàng):Qt應(yīng)用程序的安裝和工程文件的建立,都要選擇英文路徑,以避免不必要的錯(cuò)誤發(fā)生。