• <menu id="w2i4a"></menu>
  • logo Qt使用教程2020

    文檔首頁(yè)>>Qt使用教程2020>>跨平臺(tái)界面開(kāi)發(fā)工具Qt使用教程:GUI應(yīng)用程序中如何運(yùn)用觀察者模式

    跨平臺(tái)界面開(kāi)發(fā)工具Qt使用教程:GUI應(yīng)用程序中如何運(yùn)用觀察者模式


    Qt(發(fā)音為“ cute”,而不是“ cu-tee”)是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中也非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。更多Qt產(chǎn)品詳情點(diǎn)擊這里>>

    點(diǎn)擊下載Qt最新試用版

    觀察者模式

    幾乎所有的UI工具包都具有一種機(jī)制來(lái)檢測(cè)用戶操作并對(duì)此操作做出響應(yīng)。其中一些使用callbacks,其他一些使用  use listeners,但是從根本上講,所有這些都受到觀察者模式的啟發(fā)。

    當(dāng)可觀察對(duì)象想要將狀態(tài)更改通知其他觀察者對(duì)象時(shí),將使用觀察者模式。以下是一些具體示例:

    • 用戶單擊了一個(gè)按鈕,應(yīng)顯示一個(gè)菜單。
    • 一個(gè)網(wǎng)頁(yè)剛剛完成加載,一個(gè)過(guò)程應(yīng)該從該加載的頁(yè)面中提取一些信息。
    • 用戶正在滾動(dòng)項(xiàng)目列表(例如在應(yīng)用商店中),并且到達(dá)末尾,因此應(yīng)加載其他項(xiàng)目。

    信號(hào)和插槽

    觀察者模式在GUI應(yīng)用程序中無(wú)處不在。Qt的創(chuàng)建是為了刪除此樣板代碼并提供一種簡(jiǎn)潔的語(yǔ)法,而信號(hào)和時(shí)隙機(jī)制就是答案。

    Qt沒(méi)有提供可供觀察的對(duì)象和觀察者,而是提供了兩個(gè)高級(jí)概念:signalslot

    • 大部分時(shí)間,對(duì)象可以發(fā)送信號(hào),以通知狀態(tài)改變的消息。
    • 時(shí)隙是用于接受和響應(yīng)信號(hào)。

    以下是我們著名的QPushButton類的一些信號(hào)和插槽示例。

    • clicked
    • pressed
    • released

    當(dāng)用戶單擊(按下然后釋放),按下或釋放按鈕時(shí),將發(fā)送這些信號(hào)。

    這是來(lái)自不同類別的一些廣告位

    • QApplication ::quit
    • QWidget :: setEnabled
    • QPushButton :: setText

    為了響應(yīng)信號(hào),必須將插槽連接到信號(hào)。Qt提供了QObject :: connect方法。這種方式與兩個(gè)宏SIGNALSLOT一起使用

    FooObjectA *fooA = new FooObjectA(); 
    FooObjectB *fooB = new FooObjectB(); 
    QObject::connect(fooA, SIGNAL (bared()), fooB, SLOT (baz()));

    假設(shè)FooObjectA具有裸露信號(hào),而FooObjectB具有baz插槽。您必須在兩個(gè)宏SIGNALSLOT中寫入信號(hào)的認(rèn)證和插槽。

    備注 :基本上,信號(hào)和插槽是方法,可無(wú)論有沒(méi)有參數(shù),都從不返回任何東西。盡管信號(hào)作為一種方法的概念是不尋常的,但是時(shí)隙實(shí)際上是一種真實(shí)的方法,在其他方法中或在響應(yīng)信號(hào)時(shí)可以像往常一樣調(diào)用它。

    在接下的文章中我們將講述如何通過(guò)信號(hào)和時(shí)隙傳輸信息。更多Qt開(kāi)發(fā)工具點(diǎn)擊這里>>

    QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購(gòu)現(xiàn)直降1000元,歡迎咨詢慧都在線客服獲取更多優(yōu)惠>>
    慧都高端UI界面開(kāi)發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();