Qt之QButtonGroup【Qt5开发实战】
时间: 2018-09-17来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
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); } } }

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行