【QT】常用控件——按钮组

继承Widget

PushButton

设置图片,先导入图片资源,见:【QT】资源文件导入_复制其他项目中的文件到qt项目中_StudyWinter的博客-CSDN博客

在布局中添加图片

调整尺寸

toolButton

显示图片、文本

显示图片(图片和文字都有时,显示图片)

显示文字

透明

RadioButton

单选按钮

四个中只能选一个,布局

默认选择一个,先改名

执行

捕获用户的选择

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 单选按钮,默认选中男
    ui->rBtn_man->setChecked(true);
    // 监听用户选择女
    connect(ui->rBtn_woman, &QRadioButton::clicked, this, [=]() {
        qDebug() << "选择女";
    });
}

Widget::~Widget()
{
    delete ui;
}

用户最终的选择

加一个性别参数

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 单选按钮,默认选中男
    ui->rBtn_man->setChecked(true);
    this->gender = true;
    // 监听用户选择女

    connect(ui->rBtn_woman, &QRadioButton::clicked, this, [=]() {
        this->gender = false;
    });

    connect(ui->rBtn_man, &QRadioButton::clicked, this, [=]() {
        this->gender = true;
    });

    connect(ui->commit, &QRadioButton::clicked, this, [=]() {
        if (gender == true) {
            qDebug() << "选择的是男性";
        } else {
            qDebug() << "选择的是女性";
        }
    });


}

Widget::~Widget()
{
    delete ui;
}

结果

CheckBox

复选按钮

监听价格实惠是否被选中,

法一:同样加属性

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 单选按钮,默认选中男
    ui->rBtn_man->setChecked(true);
    this->gender = true;
    // 监听用户选择女

    connect(ui->rBtn_woman, &QRadioButton::clicked, this, [=]() {
        this->gender = false;
    });

    connect(ui->rBtn_man, &QRadioButton::clicked, this, [=]() {
        this->gender = true;
    });

    connect(ui->commit, &QRadioButton::clicked, this, [=]() {
        if (gender == true) {
            qDebug() << "选择的是男性";
        } else {
            qDebug() << "选择的是女性";
        }
    });




    connect(ui->checkBox_2, &QRadioButton::clicked, this, [=]() {
        str = "价格实惠";
    });

    connect(ui->commit, &QRadioButton::clicked, this, [=]() {
        if (str == "价格实惠") {
            qDebug() << "选择的是价格实惠";
        }
    });





}

Widget::~Widget()
{
    delete ui;
}

结果

法二:

使用checkbox特有的信号

选中是2,取消是0

代码

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QCheckBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 单选按钮,默认选中男
    ui->rBtn_man->setChecked(true);
    this->gender = true;
    // 监听用户选择女

    connect(ui->rBtn_woman, &QRadioButton::clicked, this, [=]() {
        this->gender = false;
    });

    connect(ui->rBtn_man, &QRadioButton::clicked, this, [=]() {
        this->gender = true;
    });

    connect(ui->commit, &QRadioButton::clicked, this, [=]() {
        if (gender == true) {
            qDebug() << "选择的是男性";
        } else {
            qDebug() << "选择的是女性";
        }
    });




    connect(ui->checkBox_2, &QCheckBox::stateChanged, this, [=](int state) {
        qDebug() << state;
    });




}

Widget::~Widget()
{
    delete ui;
}

法一:代码:怎么没有1呢,半选中状态

cpp 复制代码
ui->checkBox_2->setTristate(true);        // 第三种状态,半选中

法二:√

最好使用一种(代码或者控件),防止凌乱。

相关推荐
无限进步_几秒前
【C++】巧用静态变量与构造函数:一种非常规的求和实现
开发语言·c++·git·算法·leetcode·github·visual studio
Advancer-3 分钟前
RedisTemplate 两种序列化实践方案
java·开发语言·redis
郝学胜-神的一滴11 分钟前
Socket实战:从单端聊天到多用户连接的实现秘籍
服务器·开发语言·python·网络协议·pycharm
小超超爱学习993717 分钟前
大数乘法,超级简单模板
开发语言·c++·算法
java1234_小锋22 分钟前
Java高频面试题:MyBatis如何实现动态数据源切换?
java·开发语言·mybatis
knighthood200125 分钟前
Qt5.15+VTK9.3.0实现点云点选功能
开发语言·qt
墨神谕30 分钟前
Java中,为什么要将.java文件编译成,class文件,而不是直接将.java编译成机器码
java·开发语言
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的选择片键 - 完整知识点(16)
数据库·学习·mongodb
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,MongoDB分片配置完全指南(15)
数据库·学习·mongodb
和小潘一起学AI1 小时前
CentOS 7安装Anaconda
开发语言·python