国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Qt】信號和槽

這篇具有很好參考價值的文章主要介紹了【Qt】信號和槽。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Qt】信號和槽,Qt,qt,開發(fā)語言


?需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/-->騰訊云<--/-->阿里云<--/-->華為云<--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。


?目錄

一、Qt中的信號和槽

1、信號

2、槽

3、Q_OBJECT

二、Qt中的connect函數(shù)

三、自定義信號、自定義槽

1、自定義槽函數(shù)

1.1使用代碼創(chuàng)建控件的方式

1.2使用ui創(chuàng)建控件的方式

2、自定義信號

四、帶參數(shù)的信號和槽

五、信號和槽斷開連接

六、使用lambda表達(dá)式定義槽函數(shù)


一、Qt中的信號和槽

1、信號

信號源:由哪個控件產(chǎn)生的信號

信號的類型:用戶對GUI界面的不同操作,就可能觸發(fā)不同的信號(點擊、移動光標(biāo)、勾選、下拉等)

2、槽

信號的處理方式:槽 =>處理信號的回調(diào)函數(shù)

Qt使用connect這樣的函數(shù),把一個信號和一個槽關(guān)聯(lián)起來。信號觸發(fā),自動回調(diào)信號處理函數(shù)。

3、Q_OBJECT

如果一個類要使用信號和槽,必須在類中添加Q_OBJECT這個宏

【Qt】信號和槽,Qt,qt,開發(fā)語言

二、Qt中的connect函數(shù)

connect是QObject(Qt中其他類的“祖先類”)提供的靜態(tài)成員函數(shù)。

bool QObject::connect(const QObject *sender,
   const QMetaMethod &signal, 
   const QObject *receiver, 
   const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection);
  • const QObject *sender: 哪個控件?
  • const QMetaMethod &signal: 哪種信號?(必須是信號源自帶或繼承自父類的信號)
  • const QObject *receiver: 哪個對象負(fù)責(zé)處理?
  • const QMetaMethod &method: 用于處理信號的槽函數(shù)。(要處理信號的對象提供的成員函數(shù))
  • Qt::ConnectionType type: 連接類型,它可以指定連接的類型,如自動連接、直接連接等。通常不需要手動設(shè)定。
  • 第一個和第二個參數(shù),第三個和第四個參數(shù)類型要對上才行。

【Qt】信號和槽,Qt,qt,開發(fā)語言

[signal] void QAbstractButton::clicked(boolchecked = false)

This signal is emitted when the button is activated (i.e., pressed down then released while the mouse cursor is inside the button), when the shortcut key is typed, or when click() or animateClick() is called. Notably, this signal is not emitted if you call setDown(), setChecked() or toggle().

If the button is checkable, checked is true if the button is checked, or false if the button is unchecked.

See also pressed(), released(), and toggled().

【Qt】信號和槽,Qt,qt,開發(fā)語言

三、自定義信號、自定義槽

1、自定義槽函數(shù)

槽函數(shù)一般用于用戶觸發(fā)某個操作后,需要執(zhí)行的業(yè)務(wù)邏輯。所以需要自定義槽函數(shù)。

1.1使用代碼創(chuàng)建控件的方式

【Qt】信號和槽,Qt,qt,開發(fā)語言

1.2使用ui創(chuàng)建控件的方式

【Qt】信號和槽,Qt,qt,開發(fā)語言

【Qt】信號和槽,Qt,qt,開發(fā)語言

自動生成的槽函數(shù)的名字是on_pushButton_clicked,其中on是固定的,pushButton是ui中的objectName,clicked寫明了是哪種信號。所以ui自動生成的槽函數(shù)不需要connect函數(shù)就能在觸發(fā)信號時被回調(diào)。(ui_widget.h中調(diào)用了QMetaObject::connectSlotsByName,它會觸發(fā)自動連接信號槽的規(guī)則)

2、自定義信號

自定義信號很少用到。因為在GUI中,用戶的操作行為是可以窮舉的,Qt內(nèi)置的信號已經(jīng)覆蓋到了大部分可能的用戶操作。

如果真的需要自定義信號:

1、信號是一種特殊的函數(shù),程序員只需寫出函數(shù)聲明,并告訴Qt,這是一個信號即可。這個函數(shù)的定義,是Qt在編譯過程中,自動生成的。(無法干預(yù))

2、信號函數(shù)的返回值必須是void,有沒有參數(shù)都可以,也支持函數(shù)重載。

3、信號可以使用emit關(guān)鍵字進行發(fā)射。(Qt5 emit不寫也行)

【Qt】信號和槽,Qt,qt,開發(fā)語言

四、帶參數(shù)的信號和槽

信號和槽也可以帶參數(shù)。發(fā)射信號時,就可以給信號函數(shù)傳遞實參,這個參數(shù)就會被傳遞到對應(yīng)的槽函數(shù)中。

信號和槽函數(shù)的參數(shù)類型必須一致,個數(shù)可以不一致,但是信號的參數(shù)個數(shù)必須大于槽函數(shù)的參數(shù)個數(shù)。

【Qt】信號和槽,Qt,qt,開發(fā)語言

一個信號通過connect關(guān)聯(lián)多個槽函數(shù),一個槽函數(shù)也能被多個信號關(guān)聯(lián)。

五、信號和槽斷開連接

使用disconnect斷開信號槽的連接(主動斷開往往是把信號重新綁定到另一個槽函數(shù)上)

【Qt】信號和槽,Qt,qt,開發(fā)語言

如果這里的代碼沒有disconnect,會使一個信號綁定兩個槽函數(shù),觸發(fā)點擊按鈕,同時執(zhí)行兩個槽函數(shù)。

六、使用lambda表達(dá)式定義槽函數(shù)

注意被捕獲變量的生命周期。

盡量傳值捕獲,傳引用捕獲可能會捕獲到已經(jīng)被釋放的變量,造成段錯誤。例如:

【Qt】信號和槽,Qt,qt,開發(fā)語言

上圖傳值捕獲沒問題,傳引用捕獲會崩潰。原因是button是局部變量(它指向的空間位于堆區(qū),但它自己是一個局部變量的指針),構(gòu)造函數(shù)結(jié)束后button變量即被銷毀,造成段錯誤。文章來源地址http://www.zghlxwxcb.cn/news/detail-811641.html

到了這里,關(guān)于【Qt】信號和槽的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Qt】信號和槽機制

    【Qt】信號和槽機制

    目錄 一、認(rèn)識信號和槽 二、connect函數(shù) 三、自定義槽函數(shù) 四、自定義信號 五、帶參數(shù)的信號和槽 六、信號和槽斷開連接 七、信號和槽存在的意義 八、Lambda表達(dá)式定義槽函數(shù) 概述 在Qt中,用戶和控件的每次交互過程稱為一個事件。如\\\"用戶點擊按鈕\\\"是一個事件,\\\"用戶關(guān)閉窗

    2024年02月22日
    瀏覽(26)
  • 07.QT信號和槽-2

    07.QT信號和槽-2

    ????????在Qt中,允許?定義信號的發(fā)送?以及接收?,即可以?定義信號函數(shù)和槽函數(shù)。但是對于?定義的信號函數(shù)和槽函數(shù)有?定的書寫規(guī)范。 1.1 自定義信號 (1)?定義信號函數(shù)必須寫到\\\"signals\\\"下; (2)返回值為void,只需要聲明,不需要實現(xiàn); (3)可以有參數(shù),

    2024年04月14日
    瀏覽(21)
  • Qt6.2教程——3.Qt信號和槽

    信號和槽是Qt中一個強大的特性,用于處理對象之間的通信。它們是一種事件處理機制,允許一個對象在某個事件發(fā)生時通知另一個對象。 定義 : 信號是一個QObject的成員函數(shù),當(dāng)某個特定事件發(fā)生時,它被自動調(diào)用。它可以與一個或多個槽關(guān)聯(lián)。 聲明 : 在Qt類的聲明中,信號

    2024年02月10日
    瀏覽(19)
  • [Qt的學(xué)習(xí)日常]--信號和槽

    [Qt的學(xué)習(xí)日常]--信號和槽

    前言 作者 :小蝸牛向前沖 名言 :我可以接受失敗,但我不能接受放棄 ??如果覺的博主的文章還不錯的話,還請 點贊,收藏,關(guān)注??支持博主。如果發(fā)現(xiàn)有問題的地方歡迎?大家在評論區(qū)指正 本期學(xué)習(xí):什么是信號和槽,自定義槽函數(shù)和信號函數(shù),信號和槽的傳參,斷開,

    2024年04月28日
    瀏覽(18)
  • 20221210 QT----信號和槽的使用

    20221210 QT----信號和槽的使用

    什么是信號(signal) 以QPushButton為例: (1)按下按鈕時,會觸發(fā)一個mousePressEvent事件,此時會發(fā)出一個pressed信號; (2)松開按鈕時,會觸發(fā)一個mouseReleaseEvent事件,此時會發(fā)出released和clicked信號。 事件的種類有很多,不同的事件都對應(yīng)著不同的信號,當(dāng)事件發(fā)生時,對應(yīng)

    2024年02月15日
    瀏覽(25)
  • 02 qt基本控件及信號和槽

    02 qt基本控件及信號和槽

    功能:顯示一個字符串內(nèi)容 主要接口函數(shù) 構(gòu)造函數(shù): 賦值運算符重載: 功能函數(shù): 1)基本數(shù)據(jù)類型(int,float,double,char*)轉(zhuǎn)換成字符串 number(long , int ) : QString number(int , int ) : QString number(uint , int ) : QString number(ulong , int ) : QString number(qlonglong , int ) : QString number(qulonglong , int

    2024年02月12日
    瀏覽(21)
  • qt信號和槽避免多次連接

    qt同一個信號和槽多次連接,則槽函數(shù) 會觸發(fā)多次 (默認(rèn)),可能不是我們想要的結(jié)果。 有3種方法可以解決這個問題: 因為初始化函數(shù)在在整個程序中只運行一次,所以這里面連接信號和槽,就能避免重復(fù)連接問題了。 Qt::UniqueConnection 的作用是:如果該信號以前沒連接過

    2024年02月10日
    瀏覽(47)
  • Qt快速學(xué)習(xí)(一)--對象,信號和槽

    Qt快速學(xué)習(xí)(一)--對象,信號和槽

    目錄 1.Qt概述 1.1 什么是Qt 2.2?手動創(chuàng)建 2.3?pro文件 2.4?一個最簡單的Qt應(yīng)用程序 ? ? ? ?3 第一個Qt小程序 3.1 按鈕的創(chuàng)建 3.2 對象模型(對象樹) ??????3.3?Qt窗口坐標(biāo)體系 4 信號和槽機制 ????????4.1 系統(tǒng)自帶的信號和槽 4.2 自定義信號和槽 ????4.3信號槽的拓展 ????

    2024年02月12日
    瀏覽(16)
  • QT基礎(chǔ)之——ui文件以及信號和槽機制

    QT基礎(chǔ)之——ui文件以及信號和槽機制

    ? ? ? ? 上一節(jié)我們講了除界面文件ui文件其他的所有文件,這一節(jié)我們來介紹一下ui文件:在文件目錄中我們能看到界面文件這一欄,點擊展開我們可以看到一個以\\\".ui\\\"結(jié)尾的文件,雙擊我們會看到如下界面: ? ? ? ? 我們在右側(cè)選中l(wèi)abel和PushButton拖入到工作臺上的窗口中,

    2024年04月08日
    瀏覽(23)
  • qt解決信號和槽連接時傳遞額外參數(shù)的問題

    QSignalMapper 是 Qt 框架中的一個類,用于解決信號和槽連接時傳遞額外參數(shù)的問題。當(dāng)一個信號被觸發(fā)時,QSignalMapper 可以將該信號與一個特定的參數(shù)關(guān)聯(lián)起來,并將信號與對應(yīng)的槽函數(shù)進行連接。 下面是關(guān)于 QSignalMapper 的一些詳細(xì)解釋: 1.作用: QSignalMapper 類的主要作用是在一

    2024年02月07日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包