Qt的Radio Button 單選按鈕

2022-03-11 21:06:52 字數 2240 閱讀 7543

1 在ui介面中加入控制項

2 對qradiobutton控制項進行分組

qradiobutton的分組有多重方法,如採用組合框、qwidge等,下面介紹採用qbuttongroup方法來實現分組,好處是不影響qradiobutton在介面上的顯示(組合框分組方式會在介面上出現組合框,要以自己的需要選擇),以及方便id的設定。

新增標頭檔案

#include #include
宣告qbuttongroup變數

private:

qbuttongroup *groupbutton1;

qbuttongroup *groupbutton2;

在窗體建構函式中初始化qbuttongroup,把相應的qradiobutton新增進來並設定id

groupbutton1=new qbuttongroup(this);

groupbutton1->addbutton(ui->banan_radiobutton,1);

groupbutton1->addbutton(ui->pear_radiobutton,2);

groupbutton2=new qbuttongroup(this);

groupbutton2->addbutton(ui->potato_radiobutton,0);

groupbutton2->addbutton(ui->greenpepper_radiobutton,1);

groupbutton2->addbutton(ui->spinach_radiobutton,2);

ui->greenpepper_radiobutton->setchecked(true);

3 多個qradiobutton控制項響應同乙個槽函式

在標頭檔案中宣告槽函式

public slots:

void slots_fruits();

void slots_vegetables();

在窗體建構函式中繫結訊號和槽函式

//繫結訊號和槽函式

this,slot(slots_fruits()));

connect(ui->banan_radiobutton,signal(clicked(bool)),

this,slot(slots_fruits()));

connect(ui->pear_radiobutton,signal(clicked(bool)),

this,slot(slots_fruits()));

//繫結訊號和槽函式

connect(ui->potato_radiobutton,signal(clicked(bool)),

this,slot(slots_vegetables()));

connect(ui->greenpepper_radiobutton,signal(clicked(bool)),

this,slot(slots_vegetables()));

connect(ui->spinach_radiobutton,signal(clicked(bool)),

this,slot(slots_vegetables()));

槽函式的實現

qradiobutton的槽函式中,不需要逐個檢查qradiobutton控制項狀態,僅僅通過groupbutton1->checkedid()來獲知哪乙個qradiobutton控制項被選中,其返回被選中控制項的id值。

參考資料

Qt的Radio Button 單選按鈕

qradiobutton的分組有多重方法,如採用組合框 qwidge等,採用qbuttongroup方法來實現分組,好處是不影響qradiobutton在介面上的顯示 組合框分組方式會在介面上出現組合框,要以自己的需要選擇 以及方便id的設定。新增標頭檔案 include include 宣告qbu...

QT中獲取選中的radioButton的兩種方法

qt中要獲取radiobutton組中被選中的那個按鈕,可以採用兩種如下兩種辦法進行 方法一 採用物件名稱進行獲取 1 qradiobutton pbtn qobject cast ui bg checkedbutton 2 qstring name pbtn objectname 3 if qst...

QT中獲取選中的radioButton的兩種方法

qt中要獲取radiobutton組中被選中的那個按鈕,可以採用兩種如下兩種辦法進行 方法一 採用物件名稱進行獲取 1 qradiobutton pbtn qobject cast ui bg checkedbutton 2 qstring name pbtn objectname 3if qstr...