QT系列——信號槽連接方式

      網(wǎng)友投稿 1569 2025-03-31

      本文主要講QT信號槽的連接方式。QT使用connect函數(shù)進(jìn)行連接信號槽。


      目前QT5文檔中提供了五個connect的重載函數(shù)。如下:

      connect(const QObject *, const char *, const QObject *, const char *, Qt::ConnectionType ) connect(const QObject *, const QMetaMethod &, const QObject *, const QMetaMethod &, Qt::ConnectionType ) connect(const QObject *, const char *, const char *, Qt::ConnectionType ) const connect(const QObject *, PointerToMemberFunction , const QObject *, PointerToMemberFunction , Qt::ConnectionType ) connect(const QObject *, PointerToMemberFunction , Functor ) connect(const QObject *, PointerToMemberFunction , const QObject *, Functor , Qt::ConnectionType )

      connect函數(shù)

      接下來一一講解。

      第一種方式時比較傳統(tǒng)的一種信號槽連接方式。函數(shù)名稱與參數(shù)類型都比較直觀明確。

      第二種采用QMetaMethod方式,可以通過QMetaMethod進(jìn)行類型比對等。

      第三種與第一種的信號槽連接方式相似,只是省略了接收方,接收方這里指的是this對象。這種寫法省略了this,使信號槽連接代碼簡潔。

      第四種方式采用函數(shù)指針的方式進(jìn)行綁定,省略了函數(shù)的參數(shù)類型,只指明了信號槽的函數(shù)名。這種寫法通常適用于沒有重載函數(shù)的信號槽函數(shù)。

      第五種的信號依然是函數(shù)指針,這里也省略了接收方。最后一個參數(shù)是槽函數(shù),可以是this對象的槽函數(shù)或者是lambda表達(dá)式等。

      第六種與第五種的信號槽連接方式相似,這里明確指明了接收方。

      connect連接類型

      connect函數(shù)的最后一個參數(shù)是Qt::ConnectionType,該類型指明信號槽的連接方式。

      Qt::ConnectionType定義如下:

      Qt::AutoConnection Qt::DirectConnection Qt::QueuedConnection Qt::BlockingQueuedConnection Qt::UniqueConnection

      Qt::AutoConnection

      這是最常用的連接類型,也是connect函數(shù)的默認(rèn)連接類型。

      如果接收方與發(fā)送方在同一線程中,相當(dāng)于使用Qt::DirectConnection;

      如果接收方與發(fā)送方在不同線程中,相當(dāng)于使用Qt::QueuedConnection。

      連接類型是在信號發(fā)出時確定的。

      Qt::DirectConnection

      該類型適用于單線程場合。

      當(dāng)信號發(fā)出時,槽函數(shù)在信號所在的線程中立即被調(diào)用。相當(dāng)于實時調(diào)用,類似直接函數(shù)調(diào)用。

      Qt::QueuedConnection

      該類型適用于多線程異步場合。

      信號發(fā)送后,由接收方線程事件隊列處理,發(fā)送方所在線程會繼續(xù)向下執(zhí)行。

      槽函數(shù)在接收方的線程中執(zhí)行,并不是實時調(diào)用的。

      Qt::BlockingQueuedConnection

      該類型適用于多線程同步場合。

      信號發(fā)送后,由接收方線程事件隊列處理,只是在槽函數(shù)返回之前信號所在的線程會阻塞。

      槽函數(shù)在接收方的線程中執(zhí)行。 如果接收方與發(fā)送方在同一線程,不能使用該連接類型。

      QT系列——信號槽連接方式

      Qt::UniqueConnection

      該類型用于防止重復(fù)連接。

      這是一個標(biāo)志,可以與以上四種連接類型通過按位或的方式進(jìn)行組合。使用該類型進(jìn)行連接時,當(dāng)相同的信號槽已經(jīng)連接過了,就會連接失敗。

      Qt

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:一般辦公表格軟件(辦公表格軟件excel教程計算)
      下一篇:如果快速將某幾頁的字體替換掉(將所有列調(diào)整為一頁后字體怎么變大)
      相關(guān)文章
      久久精品国产亚洲一区二区| 国产偷v国产偷v亚洲高清| 亚洲成a人片在线观看中文动漫| 一级毛片直播亚洲| 亚洲av永久无码精品秋霞电影秋 | 亚洲精品麻豆av| 国产亚洲高清在线精品不卡| 亚洲成av人无码亚洲成av人| 亚洲精品美女久久久久久久| 亚洲最大无码中文字幕| 亚洲中文精品久久久久久不卡| 亚洲av无码一区二区三区观看| 亚洲一区二区三区不卡在线播放| 亚洲免费网站在线观看| 亚洲综合视频在线观看| 亚洲色av性色在线观无码| 亚洲视频免费在线播放| 亚洲美女视频一区| 亚洲一级毛片在线播放| 亚洲精品伊人久久久久| 亚洲一区AV无码少妇电影| 亚洲欧美成人一区二区三区| 亚洲av无码成人精品国产| 婷婷综合缴情亚洲狠狠尤物| 亚洲国产精品无码久久久久久曰| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲人成中文字幕在线观看| 亚洲人成中文字幕在线观看| 亚洲AV永久精品爱情岛论坛| 亚洲成年轻人电影网站www | 在线电影你懂的亚洲| 亚洲成年人电影网站| 亚洲狠狠成人综合网| 亚洲AV日韩AV一区二区三曲| 处破女第一次亚洲18分钟| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 亚洲精品无码99在线观看 | 精品亚洲一区二区三区在线观看 | 亚洲成av人片天堂网无码】| 国产精品无码亚洲精品2021| 亚洲高清无码专区视频|