一、新建一個QtGUI應用,基類選擇QWidget,取消建立界面,添加資源文件this
二、widget.h中code
#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中blog
#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); } } }