Qt中QButtonGroup使用

QButtonGroup只是对逻辑控制,不对显示控制,默认单项,可选多项,效果如下:
在这里插入图片描述
代码如下:

#ifndef TESTWGT_H
#define TESTWGT_H

#include <QWidget>
#include <QButtonGroup>

class TestWgt : public QWidget
{
    
    
    Q_OBJECT

public:
    explicit TestWgt(QWidget *parent = 0);
    ~TestWgt();

private:
    void initObject();
    void initConnect();

private slots:
    void slot_BtnGroupChanged(int);
    void slot_RtnGroupChanged(int);
    void slot_ChxGroupChanged(int);

private:

    QButtonGroup *m_pBtnGroup;
    QButtonGroup *m_pRtnGroup;
    QButtonGroup *m_pChxGroup;
};

#endif // TESTWGT_H

#include "testwgt.h"
#include "ui_testwgt.h"
#include <QDebug>
#include <QCheckBox>
#include <QPushButton>
#include <QRadioButton>
#include <QVBoxLayout>
#include <QHBoxLayout>

TestWgt::TestWgt(QWidget *parent) :
    QWidget(parent)
{
    
    
    initObject();
    initConnect();
}

TestWgt::~TestWgt()
{
    
    
}

void TestWgt::initObject()
{
    
    
    this->setWindowTitle(tr("QButtonGroup"));
    this->setFixedSize(500,300);

    QPushButton *pTestBtn1 = new QPushButton;
    QPushButton *pTestBtn2 = new QPushButton;
    QPushButton *pTestBtn3 = new QPushButton;
    m_pBtnGroup = new QButtonGroup(this);
    m_pBtnGroup->addButton(pTestBtn1,0);
    m_pBtnGroup->addButton(pTestBtn2,1);
    m_pBtnGroup->addButton(pTestBtn3,2);

    QHBoxLayout* pHVlayout1 = new QHBoxLayout();
    pHVlayout1->setMargin(0);
    pHVlayout1->setSpacing(0);
    pHVlayout1->addStretch();
    pHVlayout1->addWidget(pTestBtn1);
    pHVlayout1->addStretch();
    pHVlayout1->addWidget(pTestBtn2);
    pHVlayout1->addStretch();
    pHVlayout1->addWidget(pTestBtn3);
    pHVlayout1->addStretch();

    QCheckBox *pTestChx1 = new QCheckBox;
    QCheckBox *pTestChx2 = new QCheckBox;
    QCheckBox *pTestChx3 = new QCheckBox;
    m_pChxGroup= new QButtonGroup(this);
    m_pChxGroup->addButton(pTestChx1,0);
    m_pChxGroup->addButton(pTestChx2,1);
    m_pChxGroup->addButton(pTestChx3,2);
    // 设置不互斥
    pChxGroup->setExclusive(false);//这样的话就支持多选了

    QHBoxLayout* pHVlayout2 = new QHBoxLayout();
    pHVlayout2->setMargin(0);
    pHVlayout2->setSpacing(0);
    pHVlayout2->addStretch();
    pHVlayout2->addWidget(pTestChx1);
    pHVlayout2->addStretch();
    pHVlayout2->addWidget(pTestChx2);
    pHVlayout2->addStretch();
    pHVlayout2->addWidget(pTestChx3);
    pHVlayout2->addStretch();

    QRadioButton *pTestRtn1 = new QRadioButton;
    QRadioButton *pTestRtn2 = new QRadioButton;
    QRadioButton *pTestRtn3 = new QRadioButton;
    m_pRtnGroup= new QButtonGroup(this);
    m_pRtnGroup->addButton(pTestRtn1,0);
    m_pRtnGroup->addButton(pTestRtn2,1);
    m_pRtnGroup->addButton(pTestRtn3,2);
    // 设置不互斥
    pRtnGroup->setExclusive(false);//这样的话就支持多选了

    QHBoxLayout* pHVlayout3 = new QHBoxLayout();
    pHVlayout3->setMargin(0);
    pHVlayout3->setSpacing(0);
    pHVlayout3->addStretch();
    pHVlayout3->addWidget(pTestRtn1);
    pHVlayout3->addStretch();
    pHVlayout3->addWidget(pTestRtn2);
    pHVlayout3->addStretch();
    pHVlayout3->addWidget(pTestRtn3);
    pHVlayout3->addStretch();

    QVBoxLayout* pMainVlayout = new QVBoxLayout(this);
    pMainVlayout->setMargin(0);
    pMainVlayout->setSpacing(0);
    pMainVlayout->addStretch();
    pMainVlayout->addLayout(pHVlayout1);
    pMainVlayout->addStretch();
    pMainVlayout->addLayout(pHVlayout2);
    pMainVlayout->addStretch();
    pMainVlayout->addLayout(pHVlayout3);
    pMainVlayout->addStretch();
}

void TestWgt::initConnect()
{
    
    
    connect(m_pBtnGroup,SIGNAL(buttonClicked(int)),this,SLOT(slot_BtnGroupChanged(int)));
    connect(m_pRtnGroup,SIGNAL(buttonClicked(int)),this,SLOT(slot_RtnGroupChanged(int)));
    connect(m_pChxGroup,SIGNAL(buttonClicked(int)),this,SLOT(slot_ChxGroupChanged(int)));
}

void TestWgt::slot_BtnGroupChanged(int id)
{
    
    
    qDebug() << "slot_BtnGroupChanged=>" << id << endl;
}

void TestWgt::slot_RtnGroupChanged(int id)
{
    
    
    qDebug() << "slot_RtnGroupChanged=>" << id << endl;
}

void TestWgt::slot_ChxGroupChanged(int id)
{
    
    
    qDebug() << "slot_ChxGroupChanged=>" << id << endl;
}
#include <QApplication>
#include "testwgt.h"

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);

    TestWgt w;
    w.show();

    return a.exec();
}

猜你喜欢

转载自blog.csdn.net/oTianLe1234/article/details/113882216
今日推荐