widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QRadioButton> //单选按钮
#include <QGroupBox> //分组框
#include <QHBoxLayout> //水平布局
#include <QVBoxLayout> //垂直布局
#include <QPushButton> //按钮
#include <QLabel> //标签
#include <QLineEdit> //行编辑器
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QRadioButton *rb[4]; //4个单选按钮
QGroupBox *grpbox; //分组框
QPushButton *pb; //按钮
QLabel *lb; //标签
QLineEdit *le; //行编辑器
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setFixedSize(430,320); //设置主窗口大小
grpbox = new QGroupBox("贵州的省会是?",this); //创建分组框
QStringList list = {"成都","贵阳","长沙","深圳"}; //保存单选按钮名字
QVBoxLayout *vbox1 = new QVBoxLayout(); //创建垂直布局管理器
for(int i = 0;i < 4;i++)
{
rb[i] = new QRadioButton(this); //创建单选按钮
rb[i]->setText(list.at(i)); //设置按钮名字
vbox1->addWidget(rb[i]); //将所有单选按钮加入垂直布局管理器
connect(rb[i],&QRadioButton::clicked,[=](){
pb->setEnabled(true);
});
}
grpbox->setLayout(vbox1); //将垂直分布管理器放入分组框
pb = new QPushButton("提交",this); //创建按钮
pb->setEnabled(false); //先设置为不能点击,单选按钮有选择时再打开功能
connect(pb,&QPushButton::clicked,[=](){
if(rb[1]->isChecked())
{
le->setText("回答正确");
}
else
{
le->setText("回答错误");
}
});
lb = new QLabel("回答结果:",this); //创建标签
le = new QLineEdit(this); //创建行编辑器
QHBoxLayout *hbox = new QHBoxLayout(); //创建水平布局管理器
hbox->addWidget(lb);
hbox->addWidget(le);
QVBoxLayout *vbox2 = new QVBoxLayout(); //创建垂直布局管理器
vbox2->addWidget(grpbox); //添加分组框
vbox2->addWidget(pb); //添加按钮
vbox2->addLayout(hbox); //添加水平分布管理器hbox
setLayout(vbox2); //设置整个布局
}
Widget::~Widget()
{
}
结果