您現(xiàn)在的位置是:首頁(yè) >動(dòng)態(tài) > 2023-07-26 11:12:13 來(lái)源:
buttongroup組件的作用(buttongroup)
大家好,我是小華,我來(lái)為大家解答以上問(wèn)題。buttongroup組件的作用,buttongroup很多人還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
1、用慣了qt3的朋友在使用qt4的時(shí)候肯定會(huì)有些不適應(yīng),包括構(gòu)建界面,一些類(lèi)的使用上,都有一些區(qū)別,總得來(lái)說(shuō)Qt4在編程方式上設(shè)計(jì)的更加合理了,因?yàn)樗呀缑娲a和操作代碼完全的“隔離”開(kāi)了,這樣就避免了我們?cè)诤笃谛薷慕缑嫒缓缶幾g的時(shí)候會(huì)重寫(xiě)操作代碼帶來(lái)的尷尬局面了。qt4除了在界面設(shè)置上做了優(yōu)化,還對(duì)一些類(lèi)做了精簡(jiǎn)。比如原來(lái)Qt3上面的QButtonGroup類(lèi),在qt4的designer上面就沒(méi)有表現(xiàn)出來(lái)。只是保留了原來(lái)qt3的ButtonGroup。是不是qt4上面就沒(méi)有QButtonGroup類(lèi)了呢,當(dāng)然不是了。在qt4的assistant上面介紹QButtonGroup時(shí)說(shuō)到:“QButtonGroup provides an abstract Container into which button widgets can be placed. It does not provide a visual representation of this container (see QGroupBox for a container widget), but instead manages the states of each of the buttons in the group”。其中提到QButtonGroup 提供的是一個(gè)放置按鍵控件的虛擬容器,但它不是個(gè)可視的容器。意思就是QButtonGroup 在qt4中變成了一個(gè)抽象的類(lèi)。但是還可以像以前那樣管理里面的按鍵。用法如下:
2、 首先就是要先聲明一個(gè)QButtonGroup類(lèi)的對(duì)象:QButtonGroup *buttonGroup;
3、 接著在初始化或者構(gòu)造函數(shù)里面給這個(gè)指針對(duì)象分配空間:buttonGroup = new QButtonGroup;
4、 然后就可以用addButton()函數(shù)把想要放置的按鍵添加進(jìn)去:
5、 buttonGroup->addButton( ui.pushButton0, 0 );
6、 buttonGroup->addButton( ui.pushButton1, 1 );
7、 buttonGroup->addButton( ui.pushButton2, 2 );
8、 buttonGroup->addButton( ui.pushButton3, 3 );
9、 buttonGroup->addButton( ui.pushButton4, 4 );
10、 buttonGroup->addButton( ui.pushButton5, 5 );
11、 buttonGroup->addButton( ui.pushButton6, 6 );
12、 buttonGroup->addButton( ui.pushButton7, 7 );
13、 buttonGroup->addButton( ui.pushButton8, 8 );
14、 buttonGroup->addButton( ui.pushButton9, 9 );
15、 這樣就能把想要的按鍵與它所對(duì)應(yīng)的ID號(hào)對(duì)應(yīng)起來(lái)了,每一次點(diǎn)擊按鍵時(shí)QButtonGroup都會(huì)信號(hào)buttonClicked (int ID)發(fā)射,通過(guò)判斷ID的槽與其連接,就可以實(shí)現(xiàn)按鍵的判斷了。例如:
16、 connect( buttonGroup, SIGNAL(buttonClicked (int)), this, SLOT(buttonJudge(int)) );//連接信號(hào)和槽
17、最后在槽函數(shù)中判斷按鍵就可以了。當(dāng)然槽函數(shù)記得要事先聲明。
18、void IPhone::buttonJudge(int buttonID)
19、{
20、 if((modeFlag == defaultMode) || (modeFlag == hangupMode) || (modeFlag == inputMode))
21、{
22、 resetFont(1);
23、 if(modeFlag != inputMode)
24、 ui.lineEdit->clear();
25、 modeFlag = inputMode;
26、 switch (buttonID)
27、 {
28、 case 0: ui.lineEdit->insert("0"); break;
29、 case 1: ui.lineEdit->insert("1"); break;
30、 case 2: ui.lineEdit->insert("2"); break;
31、 case 3: ui.lineEdit->insert("3"); break;
32、 case 4: ui.lineEdit->insert("4"); break;
33、 case 5: ui.lineEdit->insert("5"); break;
34、 case 6: ui.lineEdit->insert("6"); break;
35、 case 7: ui.lineEdit->insert("7"); break;
36、 case 8: ui.lineEdit->insert("8"); break;
37、 case 9: ui.lineEdit->insert("9"); break;
38、 case 10: ui.lineEdit->insert("."); break;
39、 case 11: ui.lineEdit->insert("#"); break;
40、 default: break;
41、 }
42、}
43、}
44、這樣就能實(shí)現(xiàn)簡(jiǎn)單按鍵判別了。
本文到此講解完畢了,希望對(duì)大家有幫助。