QT:使用分组框、单选按钮、普通按钮、标签、行编辑器、垂直分布、水平分布做一个小项目

widget.h

cpp 复制代码
#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

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()
{

}

结果

相关推荐
沫璃染墨7 小时前
《Qt从零入门系列(十四):QThread多线程详解——从线程创建到客户端阻塞处理》
开发语言·c++·笔记·qt·ui·交互·线程
代钦塔拉8 小时前
【C++/Qt 进阶】设计模式系列(5):适配器模式——给“不兼容的接口“贴一层翻译膜
c++·qt·设计模式
把我格子衫拿来18 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
把我格子衫拿来1 天前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
哎写bug的程序员1 天前
关于VSCode上gcc,gdb的安装配置问题
ide·vscode·编辑器
代钦塔拉1 天前
【C++/Qt 进阶】设计模式系列(4):原型模式——用“克隆“代替“重新构造“
c++·qt·设计模式
Python图像识别1 天前
56-【2027毕设】YOLO11X光安检危险物品检测系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
旺旺的碎冰冰~1 天前
VScode解决终端输出中文乱码问题
ide·vscode·编辑器
把我格子衫拿来1 天前
鼠标点到哪里才算选中?Qt 与 VTK 的拾取坐标、DPI 与体素定位
python·qt·vtk·坐标变换·三维交互
Lhan.zzZ2 天前
Qt WebEngineView 在 Linux 上无法加载网页:从“看不见 HTML“到“禁用沙箱“
linux·c++·qt