Qt之QButtonGroup【Qt5开发实战】

1、新建一个QtGUI应用,基类选择QWidget,取消创建界面,添加资源文件

2、widget.h中

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QCheckBox>
#include <QButtonGroup>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

private:
    QButtonGroup *chk_group[2];

    QCheckBox *exclusive[3];
    QCheckBox *non_exclusive[3];

private slots:
    void chkChanged();
};

#endif // WIDGET_H

widget.cpp中

#include "widget.h"
#include <QDebug>
#include <QString>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QString str1[3] = {"游戏", "Offices", "Develop"};
    QString str2[3] = {"P&rogramming", "Q&t", "O&S"};

    chk_group[0] = new QButtonGroup(this);
    chk_group[1] = new QButtonGroup(this);

    int xpos = 30;
    int ypos = 30;

    for(int i = 0; i < 3; ++i){
        exclusive[i] = new QCheckBox(str1[i], this); //可以在多个项目中多选
        exclusive[i]->setGeometry(xpos, ypos, 100, 30);
        chk_group[0]->addButton(exclusive[i]);  //分组

        non_exclusive[i] = new QCheckBox(str2[i], this);
        non_exclusive[i]->setGeometry(xpos + 120, ypos, 100, 30);
        chk_group[1]->addButton(exclusive[i]);

        connect(non_exclusive[i], SIGNAL(clicked()), this,
                              SLOT(chkChanged()));

        ypos += 40;
    }
    chk_group[0]->setExclusive(false);  //单选
    chk_group[1]->setExclusive(true);   //多选

        exclusive[0]->setIcon(QIcon(":resources/browser.png"));
        exclusive[1]->setIcon(QIcon(":resources/calendar.png"));
        exclusive[2]->setIcon(QIcon(":resources/chat.png"));

        non_exclusive[0]->setIcon(QIcon(":resources/editor.png"));
        non_exclusive[1]->setIcon(QIcon(":resources/mail.png"));
        non_exclusive[2]->setIcon(QIcon(":resources/users.png"));
}

Widget::~Widget()
{

}

void Widget::chkChanged()
{
    for(int i = 0 ; i < 3 ; i++)
    {
        if(non_exclusive[i]->checkState())
        {
            qDebug("checkbox %d selected ", i+1);
        }
    }
}

215ed9e7d8bf5330caa93aac082c2c67bea.jpg

 

转载于:https://my.oschina.net/u/3919756/blog/2052277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值