qt_qapplication類(lèi)簡(jiǎn)介_(kāi)第1頁(yè)
已閱讀1頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、QtQApplication類(lèi)簡(jiǎn)介一、詳細(xì)描述一、詳細(xì)描述QApplication類(lèi)管理圖形用戶(hù)界面應(yīng)用程序圖形用戶(hù)界面應(yīng)用程序的控制流控制流和主要設(shè)置主要設(shè)置??梢哉f(shuō)QApplication是Qt的整個(gè)后臺(tái)管理整個(gè)后臺(tái)管理的命脈它包含主事件循環(huán)主事件循環(huán),在其中來(lái)自窗口系統(tǒng)和其它資源的所有事件來(lái)自窗口系統(tǒng)和其它資源的所有事件被處理和調(diào)度。它也處理應(yīng)用程序的初始化和結(jié)束應(yīng)用程序的初始化和結(jié)束,并且提供對(duì)話管理提供對(duì)話管理。它也處理絕大多

2、數(shù)系統(tǒng)范圍和應(yīng)用程序范圍的設(shè)置系統(tǒng)范圍和應(yīng)用程序范圍的設(shè)置。對(duì)于任何一個(gè)使用任何一個(gè)使用Qt的圖形用戶(hù)界面應(yīng)用程序的圖形用戶(hù)界面應(yīng)用程序,都存在一個(gè)QApplication對(duì)象,而不論這個(gè)應(yīng)用程序在同一時(shí)間內(nèi)是不是有不論這個(gè)應(yīng)用程序在同一時(shí)間內(nèi)是不是有0、1、2或更多個(gè)或更多個(gè)窗口窗口。QApplication對(duì)象是可以通過(guò)全局變量通過(guò)全局變量qApp訪問(wèn)訪問(wèn)。它的負(fù)責(zé)的主要范圍有:它使用用戶(hù)的桌面設(shè)置桌面設(shè)置,例如palette()、

3、font()和doubleClickInterval()來(lái)初始化應(yīng)用程序。如果用戶(hù)改變?nèi)肿烂妫缤ㄟ^(guò)一些控制面板,它會(huì)對(duì)這些屬性保持跟蹤。它執(zhí)行事件處理事件處理,也就是說(shuō)它從低下的窗口系統(tǒng)接收事件從低下的窗口系統(tǒng)接收事件并且把它們分派給相關(guān)的窗口部件分派給相關(guān)的窗口部件。通過(guò)使用sendEvent()和postEvent(),你可以發(fā)送你自己的事件到窗口部件發(fā)送你自己的事件到窗口部件。它分析命令行參數(shù)并且根據(jù)它們?cè)O(shè)置內(nèi)部狀態(tài)分析命令

4、行參數(shù)并且根據(jù)它們?cè)O(shè)置內(nèi)部狀態(tài)。關(guān)于這點(diǎn)的詳細(xì)情況請(qǐng)參考下面的構(gòu)造函數(shù)文檔。它定義了由QStyle對(duì)象封裝對(duì)象封裝的應(yīng)用程序的觀感應(yīng)用程序的觀感。在運(yùn)行狀態(tài)下,可以通過(guò)setStyle()來(lái)改變。它指定了應(yīng)用程序如何分配顏色應(yīng)用程序如何分配顏色。詳細(xì)情況請(qǐng)參考setColSpec()。它定義了默認(rèn)文本編碼默認(rèn)文本編碼(請(qǐng)參考setDefaultCodec())并且提供了通過(guò)translate()用戶(hù)可見(jiàn)的本地化字符串。它提供了一些像de

5、sktop()和clipboard()這樣的魔術(shù)般的對(duì)象。它知道應(yīng)用程序的窗口應(yīng)用程序的窗口。你可以使用widgetAt()來(lái)詢(xún)問(wèn)在一個(gè)確定點(diǎn)上存在哪個(gè)窗口部件一個(gè)確定點(diǎn)上存在哪個(gè)窗口部件,得到一個(gè)topLevelWidgets()(頂級(jí)窗口部件)的(頂級(jí)窗口部件)的列表列表和通過(guò)closeAllWindows()來(lái)關(guān)閉所有窗口來(lái)關(guān)閉所有窗口,等等。它管理應(yīng)用程序的鼠標(biāo)光標(biāo)處理鼠標(biāo)光標(biāo)處理,請(qǐng)參考setOverrideCurs()和se

6、tGlobalMouseTracking()。在X窗口系統(tǒng)上,它提供刷新和同步通訊流的函數(shù)刷新和同步通訊流的函數(shù),請(qǐng)參考flushX()和syncX()。它提供復(fù)雜的對(duì)話管理支持對(duì)話管理支持。這使得當(dāng)用戶(hù)注銷(xiāo)時(shí),它可以讓?xiě)?yīng)用程序很好地結(jié)束,如果無(wú)法終止,撤消關(guān)閉進(jìn)程并且甚至為未來(lái)的對(duì)話保留整個(gè)應(yīng)用程序的狀態(tài)。詳細(xì)情況請(qǐng)參考isSessionRested()、sessionId()、commitData()和saveState()。應(yīng)用程

7、序排演實(shí)例包含了一個(gè)QApplication通常用法的典型完整的main()。因?yàn)橐驗(yàn)镼Application對(duì)象做了如此多的初始化,它必須在所有與用戶(hù)界面相關(guān)的其它類(lèi)被創(chuàng)建之前被創(chuàng)建。對(duì)象做了如此多的初始化,它必須在所有與用戶(hù)界面相關(guān)的其它類(lèi)被創(chuàng)建之前被創(chuàng)建。因?yàn)樗蔡幚砻钚袇?shù),在應(yīng)用程序中對(duì)因?yàn)樗蔡幚砻钚袇?shù),在應(yīng)用程序中對(duì)argv解釋和修改之前創(chuàng)建它通常是一個(gè)好主意。解釋和修改之前創(chuàng)建它通常是一個(gè)好主意。(注意,也對(duì)于X1

8、1,setMainWidget()可以根據(jù)geometry選項(xiàng)來(lái)改變主窗口部件。為了保持這個(gè)功能,你必須在setMainWidget()和它的任何重載之前設(shè)置你的默認(rèn)。)二、二、QApplication兩類(lèi)構(gòu)造的講解兩類(lèi)構(gòu)造的講解QApplication::QApplication(int遍歷窗口部件遍歷窗口部件QWidgetwwhile((w=it.current())!=0)對(duì)于每一個(gè)窗口部件對(duì)于每一個(gè)窗口部件……itwupdate

9、()list刪除這個(gè)列表,不是這個(gè)窗口部件刪除這個(gè)列表,不是這個(gè)窗口部件QWidgetListQApplication::topLevelWidgets()[靜態(tài)靜態(tài)]返回應(yīng)用程序中頂級(jí)窗口部件的列表頂級(jí)窗口部件的列表。這個(gè)列表是使用new創(chuàng)建的并且必須由調(diào)用者刪除。如果沒(méi)有頂級(jí)窗口部件,這個(gè)列表是空的(QPtrList::isEmpty())。注意一些頂級(jí)窗口部件也許被隱藏了,例如如果當(dāng)前沒(méi)有工具提示被顯示的工具提示。注意一些頂級(jí)窗口

10、部件也許被隱藏了,例如如果當(dāng)前沒(méi)有工具提示被顯示的工具提示。實(shí)例:顯示所有隱藏的頂級(jí)窗口部件。顯示所有隱藏的頂級(jí)窗口部件。QWidgetListlist=QApplication::topLevelWidgets()QWidgetListItit(list)遍歷窗口部件遍歷窗口部件QWidgetwwhile((w=it.current())!=0)對(duì)每一個(gè)頂級(jí)窗口部件對(duì)每一個(gè)頂級(jí)窗口部件itif(!wisVisible())wshow(

11、)list刪除這個(gè)列表,而不是窗口部件刪除這個(gè)列表,而不是窗口部件QWidgetQApplication::topLevelAt(intxinty)[static]返回最上層返回最上層xy點(diǎn)的點(diǎn)的widget可以用來(lái)定位最上層窗口可以用來(lái)定位最上層窗口QWidgetQApplication::widgetAt(intxinty)[static]返回當(dāng)前層返回當(dāng)前層xy點(diǎn)的點(diǎn)的widget可以用來(lái)定位當(dāng)前窗口可以用來(lái)定位當(dāng)前窗口,和top

12、LevelAt不同的是widgetAt是以globalscreenposition來(lái)判斷的,而topLevelAt是以顯示區(qū)域?yàn)樽鴺?biāo)區(qū)域以顯示區(qū)域?yàn)樽鴺?biāo)區(qū)域的。voidQApplication::closeAllWindows()[staticslot]關(guān)閉所有頂級(jí)窗口。關(guān)閉所有頂級(jí)窗口。exitAct=newQAction(tr(“EexitActsetShtcuts(QKeySequence::Quit)exitActsetStat

13、usTip(tr(“Exittheapplication“))connect(exitActSIGNAL(triggered())qAppSLOT(closeAllWindows()))四、關(guān)于事件循環(huán)四、關(guān)于事件循環(huán)qApplication的事件循環(huán),就是MainLoop的事件循環(huán),當(dāng)然它的原理和QEventLoop的原理是一樣的。voidQCeApplication::processEvents(QEventLoop::Proces

14、sEventsFlagsflags=QEventLoop::AllEvents)[static]Processesallpendingeventsfthecallingthreadaccdingtothespecifiedflagsuntiltherearenomeeventstoprocess.Youcancallthisfunctionoccasionallywhenyourprogramisbusyperfmingalongope

15、ration(e.g.copyingafile).IneventyouarerunningalocalloopwhichcallsthisfunctioncontinuouslywithoutaneventlooptheDeferredeventswillnotbeprocessed.Thiscanaffectthebehaviourofwidgetse.g.QToolTipthatrelyonDeferredeventstofunct

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論