在《Qt信號和槽函數機制,此篇足矣》一文中已經描述了Qt的信號和槽函數機制,在實際項目開發中,一般會使用QObject下提供的接口函數創建信號和槽函數之間的關聯:
?
但是在Qt Designer中提供了一個快速關聯信號和槽函數的方式:使用『轉到槽...』對話框創建選定控件之間的信號和槽函數關聯。
在點擊『轉到槽...』選項后,會彈出一個編輯框,例如此處以QPushButton按鈕控件為例,則會彈出如下的對話框:
從上圖可知,首先QObject和QWidget下的信號是公共的,QAbstractButton是按鈕類獨有的,Qt使用該類抽象出了按鈕的一些公共操作,并已定義好具體的信號。當選中具體信號后,點擊“確定”按鈕,QtCreator會自動生成一個槽函數,例如,如果選擇了clicked()這個信號,則會在代碼中生成如下代碼,在頭文件生成代碼如下:
privateslots: voidon_pushButton_clicked();
在源文件中生成代碼如下:
本質上,QtCreator生成代碼的成員函數的命名是能夠被QMetaObject的自動連接工具識別的,在構建過程中,在uic生成的用于描述界面的C++文件中,會出現以下代碼:
因此,通過connectSlotByName()就將名稱和槽函數進行了關聯,該函數會遞歸搜索給定對象的所有子對象,并將它們的匹配信號連接到遵循特定格式命名的槽函數,格式如下:
voidon_
在實際使用過程中,只需要聲明和實現一個槽函數,其名稱遵循標準約定,就可以將一個控件對象的信號和具體槽函數關聯,當然這個過程由QtCreator自動完成。
Qt提供的信號和槽函數的自動連接機制,為開發小部件提供了標準命名約定和顯式接口。通過提供實現給定界面的源代碼,在設計用戶界面時無需再編寫代碼就可以檢查設計是否真正有效了。
小生總結
基于QtCreator,提供的信號和槽函數的自動連接機制在實際開發中,經常會被使用到,特別是在需要快速驗證功能和需求的時候,這種方式比使用connect()關聯信號和槽函數的開發效率要快很多。但是,如果界面中同類型控件較多的情況下,就需要注釋清楚,不然不好區分具體控件下的功能。
在實際項目開發中,對于自定義的信號,習慣使用connect()進行槽函數的關聯。對于具體界面中控件,如果是Qt提供的標準控件,則可以使用信號和槽函數的自動連接機制,以加快開發效率。
審核編輯:湯梓紅
-
信號
+關注
關注
11文章
2804瀏覽量
77104 -
函數
+關注
關注
3文章
4346瀏覽量
62972 -
Designer
+關注
關注
0文章
122瀏覽量
35863 -
代碼
+關注
關注
30文章
4827瀏覽量
69052 -
Qt
+關注
關注
1文章
308瀏覽量
38066
原文標題:Qt “懶人寫法”之一鍵破“槽”
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
西門子SMART200PLC一鍵啟停的幾種寫法
![西門子SMART200PLC<b class='flag-5'>一鍵</b>啟停的幾種<b class='flag-5'>寫法</b>](https://file1.elecfans.com/web2/M00/8C/B5/wKgaomSwoyuAf1XGAACEkw1ezaY852.jpg)
方便快捷:PADS的一鍵快捷功能:一鍵灌銅,一鍵檢查DRC
一鍵還原系統
電信一鍵免流量軟件電信一鍵免流軟件app
Stm32怎么一鍵下載
VBS腳本實例之一鍵升級哨位臺核心板和底板程序腳本的資料說明
![VBS腳本實例<b class='flag-5'>之一鍵</b>升級哨位臺核心板和底板程序腳本的資料說明](https://file.elecfans.com/web1/M00/91/77/pIYBAFzQ5OCALnDQAADXFf7cjuQ615.png)
Stm32 一鍵下載電路詳解
![Stm32 <b class='flag-5'>一鍵</b>下載電路詳解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
一文詳解Qt信號和槽函數機制
淺淡西門子smart200PLC一鍵啟停的幾種寫法
smart200PLC一鍵啟停的常用寫法
![smart200PLC<b class='flag-5'>一鍵</b>啟停的常用<b class='flag-5'>寫法</b>](https://file1.elecfans.com/web2/M00/A8/F2/wKgZomUiKCKAcl6sAAAOITBfqqU724.jpg)
評論