在《Qt信號和槽函數(shù)機制,此篇足矣》一文中已經描述了Qt的信號和槽函數(shù)機制,在實際項目開發(fā)中,一般會使用QObject下提供的接口函數(shù)創(chuàng)建信號和槽函數(shù)之間的關聯(lián):
?
但是在Qt Designer中提供了一個快速關聯(lián)信號和槽函數(shù)的方式:使用『轉到槽...』對話框創(chuàng)建選定控件之間的信號和槽函數(shù)關聯(lián)。
在點擊『轉到槽...』選項后,會彈出一個編輯框,例如此處以QPushButton按鈕控件為例,則會彈出如下的對話框:
從上圖可知,首先QObject和QWidget下的信號是公共的,QAbstractButton是按鈕類獨有的,Qt使用該類抽象出了按鈕的一些公共操作,并已定義好具體的信號。當選中具體信號后,點擊“確定”按鈕,QtCreator會自動生成一個槽函數(shù),例如,如果選擇了clicked()這個信號,則會在代碼中生成如下代碼,在頭文件生成代碼如下:
privateslots: voidon_pushButton_clicked();
在源文件中生成代碼如下:
本質上,QtCreator生成代碼的成員函數(shù)的命名是能夠被QMetaObject的自動連接工具識別的,在構建過程中,在uic生成的用于描述界面的C++文件中,會出現(xiàn)以下代碼:
因此,通過connectSlotByName()就將名稱和槽函數(shù)進行了關聯(lián),該函數(shù)會遞歸搜索給定對象的所有子對象,并將它們的匹配信號連接到遵循特定格式命名的槽函數(shù),格式如下:
voidon_
在實際使用過程中,只需要聲明和實現(xiàn)一個槽函數(shù),其名稱遵循標準約定,就可以將一個控件對象的信號和具體槽函數(shù)關聯(lián),當然這個過程由QtCreator自動完成。
Qt提供的信號和槽函數(shù)的自動連接機制,為開發(fā)小部件提供了標準命名約定和顯式接口。通過提供實現(xiàn)給定界面的源代碼,在設計用戶界面時無需再編寫代碼就可以檢查設計是否真正有效了。
小生總結
基于QtCreator,提供的信號和槽函數(shù)的自動連接機制在實際開發(fā)中,經常會被使用到,特別是在需要快速驗證功能和需求的時候,這種方式比使用connect()關聯(lián)信號和槽函數(shù)的開發(fā)效率要快很多。但是,如果界面中同類型控件較多的情況下,就需要注釋清楚,不然不好區(qū)分具體控件下的功能。
在實際項目開發(fā)中,對于自定義的信號,習慣使用connect()進行槽函數(shù)的關聯(lián)。對于具體界面中控件,如果是Qt提供的標準控件,則可以使用信號和槽函數(shù)的自動連接機制,以加快開發(fā)效率。
審核編輯:湯梓紅
-
信號
+關注
關注
11文章
2791瀏覽量
76796 -
函數(shù)
+關注
關注
3文章
4332瀏覽量
62653 -
Designer
+關注
關注
0文章
122瀏覽量
35799 -
代碼
+關注
關注
30文章
4790瀏覽量
68649 -
Qt
+關注
關注
1文章
306瀏覽量
37932
原文標題:Qt “懶人寫法”之一鍵破“槽”
文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論