#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QButtonGroup>
#include <QCheckBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
QCheckBox* exclusive[3];
QCheckBox* non_exclusive[3];
public slots:
void chkChanged();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(270,191); // 重新设置窗体大小
this->centralWidget(); // 将窗体放置在屏幕中间
QString str1[] = {"游戏","办公","开发"};
QString str2[] = {"Programming","Qt","OS"};
int xpos = 30 ;
int ypos = 30 ;
QButtonGroup* chk_group[2]; // 按钮组控件,只是逻辑上的分类而已
chk_group[0] = new QButtonGroup(this);
chk_group[1] = new QButtonGroup(this);
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(non_exclusive[i]);
ypos += 40 ;
}
chk_group[0]->setExclusive(false); // 单选失能
chk_group[1]->setExclusive(true); // 单选使能
exclusive[0]->setIcon(QIcon("res/01.png"));
exclusive[1]->setIcon(QIcon("res/02.png"));
exclusive[2]->setIcon(QIcon("res/03.png"));
non_exclusive[0]->setIcon(QIcon("res/04.png"));
non_exclusive[1]->setIcon(QIcon("res/05.png"));
non_exclusive[2]->setIcon(QIcon("res/06.png"));
connect(exclusive[0],SIGNAL(clicked()),this,SLOT(chkChanged()));
connect(exclusive[1],SIGNAL(clicked()),this,SLOT(chkChanged()));
connect(exclusive[2],SIGNAL(clicked()),this,SLOT(chkChanged()));
}
MainWindow::~MainWindow()
{
}
void MainWindow::chkChanged()
{
for(int i=0 ; i<3 ; i++)
{
if(exclusive[i]->checkState())
{
qDebug("checkbox %d selected",i+1);
}
}
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
![]()