中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

有個(gè)網(wǎng)站專(zhuān)做品牌 而且價(jià)格便宜百度商店

有個(gè)網(wǎng)站專(zhuān)做品牌 而且價(jià)格便宜,百度商店,汪峰做的音樂(lè)網(wǎng)站,免費(fèi)采集器 wordpress信號(hào)和槽的簡(jiǎn)介 信號(hào)和插槽用于對(duì)象之間的通信。信號(hào)和插槽機(jī)制是Qt的核心特征,可能是不同的部分大部分來(lái)自其他框架提供的特性。信號(hào)和槽是由Qt的元對(duì)象系統(tǒng)實(shí)現(xiàn)的。介紹(來(lái)自Qt幫助文檔Signals & Slots) 在GUI編程中,當(dāng)我們…

信號(hào)和槽的簡(jiǎn)介

信號(hào)和插槽用于對(duì)象之間的通信。信號(hào)和插槽機(jī)制是Qt的核心特征,可能是不同的部分大部分來(lái)自其他框架提供的特性。信號(hào)和槽是由Qt的元對(duì)象系統(tǒng)實(shí)現(xiàn)的。

介紹(來(lái)自Qt幫助文檔Signals & Slots)

????????在GUI編程中,當(dāng)我們更改一個(gè)小部件時(shí),我們通常希望通知另一個(gè)小部件。更一般地說(shuō),我們希望任何類(lèi)型的對(duì)象都能夠進(jìn)行交互相互溝通。例如,如果用戶(hù)單擊Close按鈕,我們可能希望調(diào)用窗口的Close()函數(shù)。其他工具包使用回調(diào)實(shí)現(xiàn)這種通信。回調(diào)可以是一個(gè)指向函數(shù)的指針(函數(shù)指針),所以如果你想要一個(gè)處理函數(shù)通知你在某些事件中,您將指向另一個(gè)函數(shù)(回調(diào)函數(shù))的指針傳遞給處理函數(shù)。然后,處理函數(shù)在適當(dāng)?shù)臅r(shí)候調(diào)用回調(diào)。雖然確實(shí)存在使用此方法的成功框架,但回調(diào)可能不直觀(guān),并且可能在確保類(lèi)型正確性方面存在問(wèn)題:callback arguments.

對(duì)比java的事件處理機(jī)制非常類(lèi)似:

傳送門(mén):java事件處理入門(mén)icon-default.png?t=N7T8http://t.csdnimg.cn/C1SUt

connect函數(shù)的使用

點(diǎn)擊按鈕關(guān)閉窗口來(lái)進(jìn)行演示信號(hào)和槽機(jī)制:widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget)
{ui->setupUi(this);//第二種new方式,省略上面兩行QPushButton *btn2 = new QPushButton("關(guān)閉窗口", this);btn2->move(100,100); //按鈕左上點(diǎn)移動(dòng)到100*100的位置上connect(btn2, &QPushButton::clicked, this, &QWidget::close);
}Widget::~Widget()
{delete ui;
}

【運(yùn)行結(jié)果】

補(bǔ)充知識(shí)點(diǎn):

在GUI(圖形用戶(hù)界面)編程中,不同的界面元素(我們通常稱(chēng)之為“小部件”)之間經(jīng)常需要相互通信。比如,當(dāng)你點(diǎn)擊一個(gè)“關(guān)閉”按鈕時(shí),你希望這個(gè)操作能夠通知窗口進(jìn)行關(guān)閉。為了實(shí)現(xiàn)這種通信,許多編程框架和庫(kù)使用了一種叫做“回調(diào)”的機(jī)制。

什么是“回調(diào)”

簡(jiǎn)單來(lái)說(shuō),回調(diào)就是當(dāng)某個(gè)事件發(fā)生時(shí),你告訴另一個(gè)函數(shù)(或方法)去執(zhí)行的一種機(jī)制。這個(gè)被告訴去執(zhí)行的函數(shù),就是我們所說(shuō)的“回調(diào)函數(shù)”。回調(diào)允許程序中的不同部分在特定事件發(fā)生時(shí)相互“交談”或“通知”。

為什么要用回調(diào)?

  • 解耦:回調(diào)允許我們將事件的發(fā)起者和處理者分開(kāi),這有助于代碼的模塊化和重用。
  • 靈活性:可以動(dòng)態(tài)地改變或添加新的處理邏輯,而不需要修改事件的發(fā)起者。

回調(diào)的“例子”

想象一下,你是一家餐廳的服務(wù)員。當(dāng)有顧客點(diǎn)完餐后,你不需要親自去廚房告訴廚師做什么菜(雖然你也可以這么做,但那樣效率很低),而是將訂單(事件)交給一個(gè)系統(tǒng)(比如一個(gè)訂單本或者電子點(diǎn)餐系統(tǒng))。這個(gè)系統(tǒng)(或某個(gè)廚師助手)會(huì)看著訂單(監(jiān)聽(tīng)事件),并在合適的時(shí)機(jī)(比如廚房準(zhǔn)備好做菜時(shí))將訂單(事件)交給廚師(回調(diào)函數(shù))去處理。

在這個(gè)例子中:

  • 顧客點(diǎn)餐?相當(dāng)于觸發(fā)了某個(gè)事件(比如按鈕點(diǎn)擊)。
  • 服務(wù)員將訂單交給系統(tǒng)?相當(dāng)于將事件的處理權(quán)交給了某個(gè)機(jī)制(可能是系統(tǒng)、助手或框架)。
  • 廚師根據(jù)訂單做菜?相當(dāng)于回調(diào)函數(shù)被調(diào)用,執(zhí)行了具體的處理邏輯。

回調(diào)的潛在問(wèn)題

  • 不直觀(guān):對(duì)于初學(xué)者來(lái)說(shuō),回調(diào)的概念可能有些抽象,需要一定的時(shí)間來(lái)適應(yīng)和理解。
  • 類(lèi)型安全:在動(dòng)態(tài)類(lèi)型語(yǔ)言中,回調(diào)可能導(dǎo)致類(lèi)型錯(cuò)誤,因?yàn)榫幾g器在編譯時(shí)無(wú)法檢查回調(diào)函數(shù)的參數(shù)和返回類(lèi)型是否與預(yù)期一致。
  • 調(diào)試?yán)щy:回調(diào)可能導(dǎo)致調(diào)用棧變得復(fù)雜,使得調(diào)試更加困難。

盡管存在這些問(wèn)題,回調(diào)仍然是GUI編程和其他許多領(lǐng)域中非常有用和強(qiáng)大的機(jī)制。隨著現(xiàn)代編程語(yǔ)言和框架的發(fā)展,許多工具和庫(kù)提供了更高級(jí)、更直觀(guān)的替代方案(如事件監(jiān)聽(tīng)器、信號(hào)槽機(jī)制、響應(yīng)式編程等),但它們背后的基本思想仍然與回調(diào)緊密相關(guān)。

由文心大模型3.5生成

“信號(hào)”的原理(來(lái)自Qt幫助文檔Signals & Slots)

????????當(dāng)對(duì)象的內(nèi)部狀態(tài)以某種方式發(fā)生變化,對(duì)象的客戶(hù)端或所有者可能會(huì)感興趣時(shí),對(duì)象就會(huì)發(fā)出信號(hào)。信號(hào)是公共訪(fǎng)問(wèn)函數(shù),可以從任何地方發(fā)但我們建議只從定義信號(hào)及其子類(lèi)的類(lèi)發(fā)出信號(hào)。
????????當(dāng)發(fā)出信號(hào)時(shí),連接到它的槽通常立即執(zhí)行,就像普通的函數(shù)調(diào)用一樣。當(dāng)這種情況發(fā)生時(shí),信號(hào)和槽機(jī)制完全獨(dú)立于任何GUI事件循環(huán)。一旦所有槽都返回,emit語(yǔ)句之后的代碼就會(huì)執(zhí)行。當(dāng)使用排隊(duì)連接時(shí),情況略有不同;在這種情況下,emit關(guān)鍵字后面的代碼將立即繼續(xù)執(zhí)行,而插將稍后執(zhí)行。
????????如果多個(gè)插槽連接到一個(gè)信號(hào),則在信號(hào)發(fā)出時(shí),這些插槽將按照它們連接的順序依次執(zhí)行。
????????信號(hào)是由moc(Meta-Object Compiler,簡(jiǎn)稱(chēng)moc,處理Qt的C++擴(kuò)展程序)自動(dòng)生成的,不能在moc中實(shí)現(xiàn)。cpp文件。它們永遠(yuǎn)不光有返回類(lèi)型(即使用void)。
????????關(guān)于參數(shù)的注意事項(xiàng):我們的經(jīng)驗(yàn)表明,如果信號(hào)和槽不使用特殊類(lèi)型它們的可重用性會(huì)更好。如果如果QScrollBar::valuechange()使用一個(gè)特殊的類(lèi)型比如假設(shè)的QScrollBar::Range,它只能連接到設(shè)計(jì)的槽專(zhuān)門(mén)為QScrollBar。將不同的輸入部件連接在一起是不可能的。

“槽”的原理(來(lái)自Qt幫助文檔Signals & Slots)

????????當(dāng)一個(gè)連接到插槽的信號(hào)被發(fā)出時(shí),就會(huì)調(diào)用這個(gè)插槽。Slots是普通的c++函數(shù),可以正常調(diào)用;它們唯一的特點(diǎn)是所有的信號(hào)都可以連接到它們上面。
????????由于slots是普通的成員函數(shù),因此在直接調(diào)用時(shí)遵循普通的c++規(guī)則。但是,作為插槽,它們可以被任何組件調(diào)用,而不管其訪(fǎng)問(wèn)級(jí)別如何,都可以通過(guò)信號(hào)插槽連接調(diào)用。這意味著從任意類(lèi)的實(shí)例發(fā)出的信號(hào)可以導(dǎo)致在不相關(guān)類(lèi)的實(shí)例中調(diào)用私有槽。
????????您還可以將插槽定義為虛擬的,我們發(fā)現(xiàn)這在實(shí)踐中非常有用。
????????與回調(diào)相比,信號(hào)和槽稍微慢一些,因?yàn)樗鼈兲峁┝烁蟮撵`活性,盡管對(duì)于實(shí)際應(yīng)用程序來(lái)說(shuō)差異并不大。一般來(lái)說(shuō),發(fā)出連接到某些插槽的信號(hào)比直接調(diào)用接收器(使用非虛擬函數(shù)調(diào)用)慢大約10倍。這是定位連接對(duì)象、安全地遍歷所有連接(例如檢查后續(xù)接收器在發(fā)射期間沒(méi)有被銷(xiāo)毀)以及以通用方式編組仟何參數(shù)所需的開(kāi)錯(cuò)。雖然10個(gè)非虛函數(shù)調(diào)用聽(tīng)起來(lái)很多,但它的開(kāi)銷(xiāo)比任何new或delete操作都要少得多。只要在后臺(tái)執(zhí)行需要new或delete的字符串、向量或列表操作,信號(hào)和槽開(kāi)銷(xiāo)只占整個(gè)函數(shù)調(diào)用成本的很小一部分。當(dāng)您在插槽中執(zhí)行系統(tǒng)調(diào)用時(shí)也是如此;或者間接調(diào)用十多個(gè)函數(shù)。信號(hào)和插槽機(jī)制的簡(jiǎn)單性和靈活性是值得的,你的用戶(hù)甚至不會(huì)注意到
????????請(qǐng)注意,當(dāng)與基于qt的應(yīng)用程序一起編譯時(shí),定義稱(chēng)為信號(hào)或槽的變量的其他庫(kù)可能會(huì)導(dǎo)致編譯器警告和錯(cuò)誤。要解決這個(gè)問(wèn)題,請(qǐng)#undef有問(wèn)題的預(yù)處理器符號(hào)。

參考文檔:http://t.csdnimg.cn/Kl21e
? ? ? ? ? ? ? ? ? Qt幫助文檔

http://www.risenshineclean.com/news/49513.html

相關(guān)文章:

  • 溫州人才網(wǎng)站開(kāi)發(fā)汕頭seo優(yōu)化公司
  • vue做網(wǎng)站的實(shí)例西安外包公司排行
  • 平陽(yáng)手機(jī)網(wǎng)站制作網(wǎng)絡(luò)營(yíng)銷(xiāo)的概述
  • 廣告人網(wǎng)站網(wǎng)絡(luò)營(yíng)銷(xiāo)模式下品牌推廣研究
  • 做游戲還是做網(wǎng)站好外貿(mào)網(wǎng)站推廣公司
  • 怎樣給自己的網(wǎng)站做優(yōu)化夜狼seo
  • wordpress固定鏈接改不回來(lái)合肥網(wǎng)站優(yōu)化seo
  • 廣告公司logo企業(yè)seo服務(wù)
  • 沈陽(yáng)網(wǎng)站制作聚藝科技成都最新數(shù)據(jù)消息
  • 建站資源低價(jià)刷粉網(wǎng)站推廣
  • 北京網(wǎng)站建設(shè)價(jià)格網(wǎng)站注冊(cè)查詢(xún)
  • 互聯(lián)網(wǎng)輿情信息中心北京優(yōu)化seo排名優(yōu)化
  • 馬云的網(wǎng)站怎么做的鞍山seo外包
  • 廣西住房與城鄉(xiāng)建設(shè)廳網(wǎng)站首頁(yè)2023年國(guó)際新聞大事件10條
  • 鄭州微盟網(wǎng)站建設(shè)公司青島網(wǎng)站seo
  • 買(mǎi)一個(gè)app軟件要多少錢(qián)seo教學(xué)
  • 手機(jī)wap網(wǎng)站模板沈陽(yáng)百度推廣優(yōu)化
  • 麥包包網(wǎng)站建設(shè)特點(diǎn)seo課程培訓(xùn)
  • 南陽(yáng)手機(jī)網(wǎng)站制作公司想做網(wǎng)絡(luò)推廣貴不
  • 怎么用網(wǎng)站模板廈門(mén)關(guān)鍵詞排名seo
  • 網(wǎng)站設(shè)計(jì)與建設(shè)工作室百度地圖導(dǎo)航2021最新版
  • 廈門(mén)市建設(shè)局網(wǎng)站公布網(wǎng)頁(yè)制作流程
  • wang域名的網(wǎng)站種子搜索神器網(wǎng)頁(yè)版
  • 保定網(wǎng)站建設(shè)與seo搜索關(guān)鍵詞排名提升
  • 長(zhǎng)沙3合1網(wǎng)站建設(shè)星巴克網(wǎng)絡(luò)營(yíng)銷(xiāo)案例分析
  • 織夢(mèng)怎么做企業(yè)網(wǎng)站廣西百度seo
  • 畢業(yè)設(shè)計(jì)網(wǎng)站開(kāi)發(fā)任務(wù)安排哪家公司建設(shè)網(wǎng)站好
  • 影視網(wǎng)站模板怎么做青島 google seo
  • 東營(yíng)網(wǎng)站建設(shè)方案策劃太原seo排名收費(fèi)
  • 網(wǎng)站建設(shè)需要什么方案好視通視頻會(huì)議app下載安裝