![QT編程介紹李楊_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/90e98267-899e-4220-b82c-4b407ffdbc9c/90e98267-899e-4220-b82c-4b407ffdbc9c1.gif)
![QT編程介紹李楊_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/90e98267-899e-4220-b82c-4b407ffdbc9c/90e98267-899e-4220-b82c-4b407ffdbc9c2.gif)
![QT編程介紹李楊_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/90e98267-899e-4220-b82c-4b407ffdbc9c/90e98267-899e-4220-b82c-4b407ffdbc9c3.gif)
![QT編程介紹李楊_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/90e98267-899e-4220-b82c-4b407ffdbc9c/90e98267-899e-4220-b82c-4b407ffdbc9c4.gif)
![QT編程介紹李楊_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/90e98267-899e-4220-b82c-4b407ffdbc9c/90e98267-899e-4220-b82c-4b407ffdbc9c5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1QT編程簡(jiǎn)介編程簡(jiǎn)介2目錄 一、QT的歷史 二、基于QT開(kāi)發(fā)的軟件 三、QT的優(yōu)越性 五、QT的類(lèi)組成 六、QT的主要通信機(jī)制信號(hào)和槽 七、QT在Windows下開(kāi)發(fā)環(huán)境的搭建 八、QT程序?qū)嵗?QT歷史 1995 Qt商用 1996 Sep 24 Qt1.0 1996 Oct KDE 組織成立 1998 Apr 05 Trolltech 的程序員在 5 天之內(nèi)將 Netscape5.0 從 Motif 移植到 Qt 上 1998 Apr 08 KDE Free Qt 基金會(huì)成立 1998 Jul 12 KDE 1.0 發(fā)布 1999 Jun 25 Qt 2.0 發(fā)布 2000 Mar 20
2、 嵌入式 Qt 發(fā)布 2000 Sep 06 Qt 2.2 發(fā)布 2000 Sep 04 Qt free edition 開(kāi)始使用 GPL 2004 Aug 4.0 2008 Aug 4.4發(fā)布, 集成Webkit和Phonon4基于QT開(kāi)發(fā)的軟件(1): KDE-015基于QT開(kāi)發(fā)的軟件(1): KDE-026基于QT開(kāi)發(fā)的軟件(2): GOOGLE地球7基于QT的軟件(3): MAYA8基于QT的軟件(4): 更多 Opera瀏覽器 Skype網(wǎng)絡(luò)電話 QCad Adobe Photoshop Album CGAL計(jì)算幾何庫(kù) 9QT優(yōu)越性1. 優(yōu)良的跨平臺(tái)特性Qt支持下列操作系統(tǒng): Win
3、dows,Linux, Solaris,Mac, SunOS, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。2. 面向?qū)ο驫t 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開(kāi)發(fā)來(lái)說(shuō)是非常 方便的。 Qt 提供了一種稱為 signals/slots 信號(hào)和槽的安全類(lèi)型來(lái)替代 callback, 具有可查詢和可設(shè)計(jì)的屬性,這使得各個(gè)元件 之間的協(xié)同工作變得十分簡(jiǎn)單。3. 豐富的 API Qt 包括多達(dá) 500 個(gè)以上的 C+ 類(lèi),還替供基于模板的 collections,serialization, file, I/O device, d
4、irectory management, date/time 類(lèi)。甚至還包括正則表達(dá)式的處理功能。4. 大量的開(kāi)發(fā)文檔Network/XML/OpenGL/Database/webkit/.105.用戶自定義控件 其他的工具包在應(yīng)用時(shí)都存在一個(gè)普遍的問(wèn)題,就是經(jīng)常沒(méi)有真正適合需求的控件,生成的自定義控件對(duì)用戶來(lái)說(shuō),也是一個(gè)黑匣子。比如,在Motif手冊(cè)中就討論了用戶自定義的控件的問(wèn)題。而在Qt中,能夠創(chuàng)建控件,具有絕對(duì)的優(yōu)越性,生成自定義控件非常簡(jiǎn)單,并且容易修改控件。6.方便性 由于Qt是一種跨平臺(tái)的GUI工具包,所以,它對(duì)編程者隱藏了在處理不同窗口系統(tǒng)時(shí)的潛在問(wèn)題。為了將基于Qt程序更加方
5、便,Qt包含了一系列類(lèi),該類(lèi)能夠使程序員避免了在文件處理、時(shí)間處理等方面存在依賴操作系統(tǒng)方面的細(xì)節(jié)問(wèn)題。7.國(guó)際化Qt為本地化應(yīng)用提供完全的支持,所有用戶界面的文本或字符串都可以利用翻譯工具將其譯成各國(guó)語(yǔ)言。QT優(yōu)越性118、高性能的工具 對(duì)于庫(kù)來(lái)講,它的有效性遠(yuǎn)超過(guò)應(yīng)用性。為了提高Qt庫(kù)的有效性、快捷性,對(duì)其進(jìn)行了優(yōu)化,Qt能執(zhí)行一些基本的任務(wù),比如圖形的潤(rùn)色,比一般的基于平臺(tái)的代碼要快。Qt是基于Xlib, 而不依賴Motif工具包??捎脩艋耐庥^ 9、Qt支持主題所以基于Qt的應(yīng)用軟件能在Mac外觀、 Windows等外觀主題之間互換,甚至改變運(yùn)行時(shí)間。這些應(yīng)用程序不管是在X Windo
6、w下,還是在Microsoft Windows下都可以獨(dú)立操作、運(yùn)行。QT優(yōu)越性1210、優(yōu)越的繪畫(huà)功能 Qt的繪畫(huà)工具QPainter類(lèi),在任意一個(gè)繪圖設(shè)備上都可以潤(rùn)色圖形。繪圖設(shè)備包括組件、像素映射、圖形文件和打印機(jī),相同的代碼可以用在4種不同類(lèi)型的設(shè)備上。 QPainter類(lèi)支持復(fù)雜的同等系統(tǒng)的轉(zhuǎn)換,很容易在所有平臺(tái)上畫(huà)旋轉(zhuǎn)文本和像素映射11、繪制2D/3D圖形功能 Qt提供了QGLWidget類(lèi),使用該類(lèi)能夠繪制2D/3D圖形。用QGLWidget就像用一個(gè)Qt組件一樣方便。這比純粹的用OpenGL做的3D圖形更好使用。13QT類(lèi)庫(kù)架構(gòu)14庫(kù)庫(kù)描述描述15QT的消息響應(yīng)機(jī)制信號(hào)和槽Qt
7、部件不同于其他用戶交互方式的GUI工具包。用戶交互方式是所有GUI(Graphical user interface)應(yīng)用程序關(guān)心的問(wèn)題。通過(guò)將某種用戶事件(比如按下鼠標(biāo))與程序事件(比如退出程序)聯(lián)系起來(lái),使用戶能夠在圖形界面中只使用鼠標(biāo)來(lái)控制程序。而其他工具包是利用回調(diào)函數(shù)來(lái)進(jìn)行用戶交互的?;卣{(diào)回調(diào)是指:你自己定義一個(gè)函數(shù),并告訴系統(tǒng)何時(shí)為何調(diào)用。你可以寫(xiě)一個(gè)特定數(shù)量和類(lèi)型參數(shù)的函數(shù),然后告訴系統(tǒng)何時(shí)使用,并傳遞給它所需的參數(shù),系統(tǒng)就會(huì)調(diào)用你定義的函數(shù),處理參數(shù),并給你返回值?;卣{(diào)函數(shù)只能是全局函數(shù),或者是靜態(tài)函數(shù),因?yàn)檫@個(gè)函數(shù)只是在類(lèi)中使用,所以為了維護(hù)類(lèi)的完整性,我們用類(lèi)的靜態(tài)成員函數(shù)
8、來(lái)做回調(diào)函數(shù)。16QT的主要通信機(jī)制信號(hào)和槽回調(diào)有兩個(gè)主要缺點(diǎn):回調(diào)有兩個(gè)主要缺點(diǎn): 1 它們不是類(lèi)型安全的。我們從來(lái)都不能確定處理函數(shù)使用了正確的參數(shù)來(lái)調(diào)用回調(diào)。2 回調(diào)和處理函數(shù)是非常強(qiáng)有力的聯(lián)系在一起的,因?yàn)樘幚砗瘮?shù)必須要知道調(diào)用哪個(gè)回調(diào)。17QT的主要通信機(jī)制信號(hào)和槽 Qt的開(kāi)發(fā)者使用另一種方法來(lái)完成這一工作。這種方法依賴于Qt特有的兩個(gè)功能,信號(hào)和槽。使用這種新方法是非常簡(jiǎn)單的,只需要編寫(xiě)一行代碼就能夠?qū)⒂脩羰录统绦蚴录B接起來(lái)。這種將用戶事件連接到程序事件的方法要比回調(diào)函數(shù),更加容易使用的兩個(gè)重要原因是:1 槽和信號(hào)是你調(diào)用Qt庫(kù)中的函數(shù)。2 信號(hào)和槽不使用其他工具包。18QT的
9、主要通信機(jī)制信號(hào)和槽19QT的主要通信機(jī)制信號(hào)和槽信號(hào)信號(hào)/ /槽機(jī)制是在槽機(jī)制是在QObjectQObject類(lèi)中實(shí)現(xiàn)的。在類(lèi)中實(shí)現(xiàn)的。在QObjectQObject類(lèi)類(lèi)或或者其一個(gè)子類(lèi)者其一個(gè)子類(lèi)( (比如:比如:QWidgetQWidget類(lèi)類(lèi)) )繼承的所有類(lèi)中,都繼承的所有類(lèi)中,都存在了信號(hào)和槽。存在了信號(hào)和槽。當(dāng)對(duì)象改變其狀態(tài)的時(shí)候,信號(hào)被發(fā)送,對(duì)象不關(guān)心有沒(méi)有其他對(duì)象接收到這個(gè)信號(hào)。槽是類(lèi)的正常成員函數(shù),可以將信號(hào)和槽通過(guò)connect()函數(shù)任意連接。當(dāng)一個(gè)信號(hào)被發(fā)射,它所連接的槽會(huì)被立即執(zhí)行,如同一個(gè)普通函數(shù)調(diào)用一樣。20QT的主要通信機(jī)制信號(hào)和槽槽槽當(dāng)信號(hào)被發(fā)出時(shí),會(huì)調(diào)用與
10、之相連接的槽。槽是普通的C+函數(shù),可以用普通的方式來(lái)調(diào)用。它唯一特殊的地方在于可以與信號(hào)相連接。槽的參數(shù)不能有默認(rèn)值槽的參數(shù)不能有默認(rèn)值。同樣,信號(hào)的參數(shù)也不能有默認(rèn)值信號(hào)的參數(shù)也不能有默認(rèn)值。在槽的參數(shù)中在槽的參數(shù)中盡量不使用自定義的數(shù)據(jù)類(lèi)型,盡量不使用自定義的數(shù)據(jù)類(lèi)型,因?yàn)檫@樣將會(huì)使通用性降低。既然槽和普通的成員函數(shù)差不多,它們和普通成員函數(shù)一樣有訪問(wèn)限制,根據(jù)槽的訪問(wèn)限制誰(shuí)可以與它們相連接,能夠分為以下三種情況。21QT的主要通信機(jī)制信號(hào)和槽public slot: public slot: 任何信號(hào)都可以與之相連接。這在窗口部件編程中非常有用,用于創(chuàng)建一些對(duì)彼此一無(wú)所知的對(duì)象,只有通過(guò)
11、信號(hào)和槽來(lái)交換信息。public slot就像是標(biāo)準(zhǔn)的鐵路一樣。protected slot: protected slot: 只有該類(lèi)及其子類(lèi)所派生的對(duì)象的信號(hào)才可以與之相連接。這類(lèi)槽的目的通常是為了類(lèi)的完善,而不是類(lèi)與外界的接口。private slot: private slot: 只有該類(lèi)自己的信號(hào)才可以與之相連接。當(dāng)然還可以將定義為當(dāng)然還可以將定義為virtual,這將非常有用。,這將非常有用。22QT的主要通信機(jī)制信號(hào)和槽信號(hào)信號(hào)當(dāng)某個(gè)信號(hào)對(duì)其客戶或所有者發(fā)生的內(nèi)部狀態(tài)發(fā)生改變,信當(dāng)某個(gè)信號(hào)對(duì)其客戶或所有者發(fā)生的內(nèi)部狀態(tài)發(fā)生改變,信、號(hào)被一個(gè)對(duì)象發(fā)射。號(hào)被一個(gè)對(duì)象發(fā)射。只有定義過(guò)這
12、個(gè)信號(hào)的類(lèi)及其派生類(lèi)能夠發(fā)射這個(gè)信號(hào)。當(dāng)一個(gè)信號(hào)被發(fā)射時(shí),與其相關(guān)聯(lián)的槽將被立刻執(zhí)行,就象一個(gè)正常的函數(shù)調(diào)用一樣。信號(hào)-槽機(jī)制完全獨(dú)立于任何GUI事件循環(huán)。只有當(dāng)所有的槽返回以后發(fā)射函數(shù)(emit)才返回。如果存在多個(gè)槽與某個(gè)信號(hào)相關(guān)聯(lián),那么,當(dāng)這個(gè)信號(hào)被發(fā)射時(shí),這些槽將會(huì)一個(gè)接一個(gè)地執(zhí)行,但是它們執(zhí)行的順序?qū)?huì)是隨機(jī)的、不確定的,我們不能人為地指定哪個(gè)先執(zhí)行、哪個(gè)后執(zhí)行。如果有兩個(gè)不同的對(duì)象對(duì)一個(gè)信號(hào)感興趣,只要將如果有兩個(gè)不同的對(duì)象對(duì)一個(gè)信號(hào)感興趣,只要將該信號(hào)連接到這兩個(gè)對(duì)象的槽上就可以了該信號(hào)連接到這兩個(gè)對(duì)象的槽上就可以了23QT的主要通信機(jī)制信號(hào)和槽信號(hào)定義語(yǔ)法:class Send
13、erClassQ_OBJECT .signals:void newName(QString &name);24QT的主要通信機(jī)制信號(hào)和槽以下是創(chuàng)建槽,并把它和信號(hào)相連接的方法:與信號(hào)一樣,槽需要在類(lèi)定義的上部加入Q_OBJECT宏:class ReceiverClass Q_OBJECT向類(lèi)定義中加入槽方法的原型。這個(gè)原型必須與它將要接收的信號(hào)一樣(也就是說(shuō),具有同樣的一套參數(shù))。由于槽是方法,所以,在作為槽使用的同時(shí),也可以被直接調(diào)用。槽的方法可以設(shè)置成為公有的屬性。public slots:void nameChanged(QString &name);25QT的主要通信機(jī)
14、制信號(hào)和槽可以按照以下的方式調(diào)用connect()方法:connect(sender,SIGNAL(newName(QString &),this,SLOT(nameChanged(QString &);注 意:前兩個(gè)參數(shù)指定信號(hào)的來(lái)源,后兩個(gè)參數(shù)指定目標(biāo)槽。宏SIGNAL()和SLOT()都需要完整的方法原型,原型必須遵循,用來(lái)調(diào)用一種方法的參數(shù)必須和該種方法可以使用的參數(shù)保持一致。直到槽方法返回,你編寫(xiě)的程序才能繼續(xù)執(zhí)行。通常應(yīng)當(dāng)保持在槽方法內(nèi)部的處理過(guò)程中盡可能的簡(jiǎn)單,這樣才不會(huì)因此中止信號(hào)的發(fā)送。發(fā)送信號(hào)的可能是用戶接口過(guò)程,操作過(guò)程表現(xiàn)得比較慢或者緩慢。26 1、安裝
15、QT 開(kāi)發(fā)包qt-win-opensource-4.6.2-vs2008.EX.exe 2、安裝集成到VS2008的QT工程包qt-vs-addin-1.0.0.exe3、編譯QT開(kāi)發(fā)庫(kù)(A)添加環(huán)境變量.在當(dāng)前用戶中添加一個(gè)QTDIR,值為:L:qt-win-opensource-src-4.6.2。另外,在“系統(tǒng)變量”中的Path變量中添加L:qt-win-opensource-src-4.6.2bin,用“;”隔開(kāi)。如把Path值改成L:qt-win-opensource-src-4.6.2bin;%SystemRoot%system32;%SystemRoot%;(B)使用Visual
16、 Studio 2008 Command Prompt,進(jìn)入Microsoft Visual Studio 9.0Common7Tools目錄下,執(zhí)行vsvars32.bat,執(zhí)行完,進(jìn)入L:qt-win-opensource-src-4.6.2。QT開(kāi)發(fā)環(huán)境搭建27 (C) 在命令行輸入窗進(jìn)入qt-win-opensource-src-4.6.2。 configure -platform win32-msvc2008 -debug-and-release。 (D)輸入nmake。等上4-6個(gè)小時(shí),就完成編譯了。占用10G硬盤(pán)空間。 (E)把L:qt-win-opensource-src-4.
17、5.1下的.qmake.cache和configure.cache這兩個(gè)文件手動(dòng)備份到另一個(gè)地方。然后輸入指令: nmake confclean; (F)幾分鐘后,清理完成,那個(gè)文件夾會(huì)從10G銳減到700M,這個(gè)時(shí)候再把剛備份的.qmake.cache和configure.cache拷回原處。 (G)安裝qt-vs-addin裝完之后,打開(kāi)VS2008,菜單欄會(huì)多出一個(gè)Qt選項(xiàng),選擇Qt選項(xiàng)下的Qt Options,在Qt Versions中添加路徑,點(diǎn)擊Add,選擇路徑L:qt-win-opensource-src-4.5.1,OK。28HELLO QT(1)#include #include int main(int argc, char *argv) QApplicati
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)變速箱第一軸市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)兩用拉力器市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)閉路監(jiān)控器材行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年聚氨酯耐用油底漆項(xiàng)目可行性研究報(bào)告
- 2025年石油公司油票管理系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 2025年燃?xì)獬瑝呵袛嚅y項(xiàng)目可行性研究報(bào)告
- 2025年橫梁總成項(xiàng)目可行性研究報(bào)告
- 惠州2025年廣東惠州龍門(mén)縣總醫(yī)院第一批招聘編外人員25人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年平紋桃皮絨面料項(xiàng)目可行性研究報(bào)告
- 2025年沖壓模具項(xiàng)目可行性研究報(bào)告
- 2024年04月浙江義烏農(nóng)商銀行春季招考筆試歷年參考題庫(kù)附帶答案詳解
- 涉密計(jì)算機(jī)保密培訓(xùn)
- 掛靠免責(zé)協(xié)議書(shū)范本
- 2024年浙江省五校聯(lián)盟高考地理聯(lián)考試卷(3月份)
- 在線心理健康咨詢行業(yè)現(xiàn)狀分析及未來(lái)三至五年行業(yè)發(fā)展報(bào)告
- 電動(dòng)三輪車(chē)購(gòu)銷(xiāo)合同
- 淋巴瘤的免疫靶向治療
- 炎癥性腸病的自我管理
- 國(guó)防動(dòng)員課件教學(xué)課件
- 《地理信息系統(tǒng)GIS》全套教學(xué)課件
- 技術(shù)序列學(xué)習(xí)地圖(2023年)
評(píng)論
0/150
提交評(píng)論