Qt的Radio Button(單選按鈕)


1 在UI界面中加入控件

2 對QRadioButton控件進行分組

QRadioButton的分組有多重方法,如采用組合框、QWidge等,下面介紹采用QButtonGroup方法來實現分組,好處是不影響QRadioButton在界面上的顯示(組合框分組方式會在界面上出現組合框,要以自己的需要選擇),以及方便ID的設置。

添加頭文件

#include <QButtonGroup>
#include <QDebug>

聲明QButtonGroup變量

private:
    QButtonGroup *groupButton1;
    QButtonGroup *groupButton2;

在窗體構造函數中初始化QButtonGroup,把相應的QRadioButton添加進來並設置ID

    groupButton1=new QButtonGroup(this);
    groupButton1->addButton(ui->apple_radioButton,0);
    groupButton1->addButton(ui->banan_radioButton,1);
    groupButton1->addButton(ui->pear_radioButton,2);
    ui->apple_radioButton->setChecked(true); //默認選中apple_radioButton

    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();

在窗體構造函數中綁定信號和槽函數

    //綁定信號和槽函數
    connect(ui->apple_radioButton,SIGNAL(clicked(bool)),
            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值。

void MainWindow::slots_fruits()
{
    qDebug()<<"fruits"<<endl;
    switch(groupButton1->checkedId())
       {
       case 0:
           qDebug() <<"apple"<<endl;
           break;
       case 1:
           qDebug() <<"banan_radioButton"<<endl;
           break;
       case 2:
           qDebug() <<"pear_radioButton"<<endl;
           break;
       }
}
void MainWindow::slots_vegetables()
{
    qDebug()<<"vegetables"<<endl;
    switch(groupButton2->checkedId())
       {
       case 0:
           qDebug() <<"potato_radioButton"<<endl;
           break;
       case 1:
           qDebug() <<"greenpepper_radioButton"<<endl;
           break;
       case 2:
           qDebug() <<"spinach_radioButton"<<endl;
           break;
       }
}

運行結果

參考資料
https://blog.csdn.net/CXP2205455256/article/details/44956051


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM