0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Qt“懶人寫法”之一鍵破“槽”

嵌入式小生 ? 來源:嵌入式小生 ? 2023-02-09 17:23 ? 次閱讀

在《Qt信號(hào)和槽函數(shù)機(jī)制,此篇足矣》一文中已經(jīng)描述了Qt的信號(hào)和槽函數(shù)機(jī)制,在實(shí)際項(xiàng)目開發(fā)中,一般會(huì)使用QObject下提供的接口函數(shù)創(chuàng)建信號(hào)和槽函數(shù)之間的關(guān)聯(lián):

79eca55e-a78b-11ed-bfe3-dac502259ad0.png?

但是在Qt Designer中提供了一個(gè)快速關(guān)聯(lián)信號(hào)和槽函數(shù)的方式:使用『轉(zhuǎn)到槽...』對(duì)話框創(chuàng)建選定控件之間的信號(hào)和槽函數(shù)關(guān)聯(lián)。

7a1a4216-a78b-11ed-bfe3-dac502259ad0.png

在點(diǎn)擊『轉(zhuǎn)到槽...』選項(xiàng)后,會(huì)彈出一個(gè)編輯框,例如此處以QPushButton按鈕控件為例,則會(huì)彈出如下的對(duì)話框:

7a394d82-a78b-11ed-bfe3-dac502259ad0.png

從上圖可知,首先QObject和QWidget下的信號(hào)是公共的,QAbstractButton是按鈕類獨(dú)有的,Qt使用該類抽象出了按鈕的一些公共操作,并已定義好具體的信號(hào)。當(dāng)選中具體信號(hào)后,點(diǎn)擊“確定”按鈕,QtCreator會(huì)自動(dòng)生成一個(gè)槽函數(shù),例如,如果選擇了clicked()這個(gè)信號(hào),則會(huì)在代碼中生成如下代碼,在頭文件生成代碼如下:

privateslots:
voidon_pushButton_clicked();

在源文件中生成代碼如下:

7a4c29b6-a78b-11ed-bfe3-dac502259ad0.png

本質(zhì)上,QtCreator生成代碼的成員函數(shù)的命名是能夠被QMetaObject的自動(dòng)連接工具識(shí)別的,在構(gòu)建過程中,在uic生成的用于描述界面的C++文件中,會(huì)出現(xiàn)以下代碼:

7a670d8a-a78b-11ed-bfe3-dac502259ad0.png

因此,通過connectSlotByName()就將名稱和槽函數(shù)進(jìn)行了關(guān)聯(lián),該函數(shù)會(huì)遞歸搜索給定對(duì)象的所有子對(duì)象,并將它們的匹配信號(hào)連接到遵循特定格式命名的槽函數(shù),格式如下:

voidon__()

:對(duì)象名稱。

:信號(hào)名稱。

:傳入的參數(shù)。

在實(shí)際使用過程中,只需要聲明和實(shí)現(xiàn)一個(gè)槽函數(shù),其名稱遵循標(biāo)準(zhǔn)約定,就可以將一個(gè)控件對(duì)象的信號(hào)和具體槽函數(shù)關(guān)聯(lián),當(dāng)然這個(gè)過程由QtCreator自動(dòng)完成。

Qt提供的信號(hào)和槽函數(shù)的自動(dòng)連接機(jī)制,為開發(fā)小部件提供了標(biāo)準(zhǔn)命名約定和顯式接口。通過提供實(shí)現(xiàn)給定界面的源代碼,在設(shè)計(jì)用戶界面時(shí)無需再編寫代碼就可以檢查設(shè)計(jì)是否真正有效了。

小生總結(jié)

基于QtCreator,提供的信號(hào)和槽函數(shù)的自動(dòng)連接機(jī)制在實(shí)際開發(fā)中,經(jīng)常會(huì)被使用到,特別是在需要快速驗(yàn)證功能和需求的時(shí)候,這種方式比使用connect()關(guān)聯(lián)信號(hào)和槽函數(shù)的開發(fā)效率要快很多。但是,如果界面中同類型控件較多的情況下,就需要注釋清楚,不然不好區(qū)分具體控件下的功能。

在實(shí)際項(xiàng)目開發(fā)中,對(duì)于自定義的信號(hào),習(xí)慣使用connect()進(jìn)行槽函數(shù)的關(guān)聯(lián)。對(duì)于具體界面中控件,如果是Qt提供的標(biāo)準(zhǔn)控件,則可以使用信號(hào)和槽函數(shù)的自動(dòng)連接機(jī)制,以加快開發(fā)效率。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2767

    瀏覽量

    76466
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62241
  • Designer
    +關(guān)注

    關(guān)注

    0

    文章

    119

    瀏覽量

    35669
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4700

    瀏覽量

    68107
  • Qt
    Qt
    +關(guān)注

    關(guān)注

    1

    文章

    300

    瀏覽量

    37738

原文標(biāo)題:Qt “懶人寫法”之一鍵破“槽”

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門子SMART200PLC一鍵啟停的幾種寫法

    在生產(chǎn)中,由于安裝環(huán)境,成本控制,操作便利等因素,會(huì)用到一鍵啟停的控制,比如電機(jī)控制,閥門控制等等,今天我給大家聊聊常見的幾種寫法,為了直觀通俗,我們用LAD(梯形圖)來寫。
    發(fā)表于 07-14 09:21 ?3050次閱讀
    西門子SMART200PLC<b class='flag-5'>一鍵</b>啟停的幾種<b class='flag-5'>寫法</b>

    方便快捷:PADS的一鍵快捷功能:一鍵灌銅,一鍵檢查DRC

    傾情奉獻(xiàn)給大家,非常實(shí)用的快捷功能一鍵灌銅: [hide] [/hide]一鍵檢查連通性:[hide][/hide]一鍵檢查安全間距::[hide] [/hide]一鍵清除Error標(biāo)
    發(fā)表于 11-07 15:06

    一鍵還原系統(tǒng)

    老毛桃一鍵 V2.0.12.5更新說明: 1、細(xì)節(jié)完善及處理已知的問題2、更新GRUB模塊,提高兼容性3、高級(jí)項(xiàng)“搜索”開放自定后綴,可搜索任何后綴的GHO還原4、些函數(shù)位置及變量調(diào)整5、完善1
    發(fā)表于 06-18 20:41

    電信一鍵免流量軟件電信一鍵免流軟件app

    電信用戶一鍵免流量上網(wǎng)軟件款電信免費(fèi)流量軟件一鍵免流量app電信版加QQ1814806072電信2G3G4G都支持,支持免流開熱點(diǎn)給電腦使用或者其他的設(shè)備使用,真正強(qiáng)大的免流,超穩(wěn)定完全不跳點(diǎn)
    發(fā)表于 07-19 10:37

    什么是一鍵起飛?

    原子家的minifly,有誰搞懂了一鍵起飛呀?跪求
    發(fā)表于 07-11 04:35

    Stm32怎么一鍵下載

    文章目錄前言一鍵下載一鍵下載原理硬件原理圖跳帽與啟動(dòng)存儲(chǔ)映射串口下載程序由來一鍵下載流程通過 USB 控制機(jī)器復(fù)位握手解讀前言最近在又要折騰 stm32 了,所以翻出了腳落里的開發(fā)板,先復(fù)習(xí)下
    發(fā)表于 08-05 08:13

    一鍵ghost11使用教程

    一鍵ghost11使用教程
    發(fā)表于 01-08 09:25 ?60次下載
    <b class='flag-5'>一鍵</b>ghost11使用教程

    VBS腳本實(shí)例之一鍵升級(jí)哨位臺(tái)核心板和底板程序腳本的資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是VBS腳本實(shí)例之一鍵升級(jí)哨位臺(tái)核心板和底板程序腳本的資料說明免費(fèi)下載。
    發(fā)表于 05-07 18:22 ?0次下載
    VBS腳本實(shí)例<b class='flag-5'>之一鍵</b>升級(jí)哨位臺(tái)核心板和底板程序腳本的資料說明

    Stm32 一鍵下載電路詳解

    文章目錄前言一鍵下載一鍵下載原理硬件原理圖跳帽與啟動(dòng)存儲(chǔ)映射串口下載程序由來一鍵下載流程通過 USB 控制機(jī)器復(fù)位握手解讀前言最近在又要折騰 stm32 了,所以翻出了腳落里的開發(fā)板,先復(fù)習(xí)下
    發(fā)表于 11-24 18:06 ?9次下載
    Stm32 <b class='flag-5'>一鍵</b>下載電路詳解

    文詳解Qt信號(hào)和函數(shù)機(jī)制

    信號(hào)和用于多個(gè)對(duì)象之間的通信。信號(hào)和機(jī)制是Qt的核心特性,也是Qt與其他框架最大的不同之處。Qt的元對(duì)象系統(tǒng)是信號(hào)和
    的頭像 發(fā)表于 02-07 09:14 ?2986次閱讀

    淺淡西門子smart200PLC一鍵啟停的幾種寫法

    在生產(chǎn)中,由于安裝環(huán)境,成本控制,操作便利等因素,會(huì)用到一鍵啟停的控制,比如電機(jī)控制,閥門控制等等,今天給大家聊聊常見的幾種寫法,為了直觀通俗,用LAD(梯形圖)來寫。
    的頭像 發(fā)表于 02-21 16:38 ?2594次閱讀

    smart200PLC一鍵啟停的常用寫法

    (復(fù)位/置位一鍵啟停) 程序解說: 按下按鈕M10.4,它接通第個(gè)掃描周期,Q0.2線圈得電置位為 1;再次按下M10.4,Q0.2線圈復(fù)位為0;.5作為一鍵啟停的輔助點(diǎn), 和Q0.2線圈狀態(tài)
    發(fā)表于 10-08 11:53 ?2045次閱讀
    smart200PLC<b class='flag-5'>一鍵</b>啟停的常用<b class='flag-5'>寫法</b>

    一鍵開關(guān)電路的好處?生活中的一鍵開關(guān)電路有哪些?

    一鍵開關(guān)電路的好處?生活中的一鍵開關(guān)電路有哪些? 一鍵開關(guān)電路是指個(gè)電路設(shè)計(jì),可以用個(gè)按鈕或開關(guān)來控制多個(gè)電器或燈具的開關(guān)。
    的頭像 發(fā)表于 10-22 15:18 ?1949次閱讀

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控有區(qū)別嗎?

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控技術(shù)雖然都涉及到“一鍵順控”的概念,但它們?cè)趹?yīng)用范圍和具體實(shí)現(xiàn)上有所不同,因此變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵
    的頭像 發(fā)表于 07-31 13:34 ?357次閱讀
    變電站<b class='flag-5'>一鍵</b>順控系統(tǒng)和開關(guān)柜<b class='flag-5'>一鍵</b>順控有區(qū)別嗎?

    一鍵斷電開關(guān)的種類有哪些

    一鍵斷電開關(guān)的種類主要可以從其功能和實(shí)現(xiàn)方式上進(jìn)行分類。以下是些常見的一鍵斷電開關(guān)種類: 1. 繼電器式一鍵斷電開關(guān) 定義 :這種開關(guān)通過繼電器或接觸器控制電路的通斷,實(shí)現(xiàn)
    的頭像 發(fā)表于 09-13 16:45 ?436次閱讀