[Qt 教程之Widgets模块] —— QCheckBox复选框

Qt系列教程总目录

零、简介

QCheckBox即复选框,常用作表单非互斥选择,,在“多选多”的场景中使用。

office word和PhotoShop中都有使用复选框,如下:

在这里插入图片描述

在这里插入图片描述

一、创建QCheckBox

QCheckBox有两个构造函数,都要指定父对象,其中一个可以设置复选框的文本。

QCheckBox(QWidget *parent = nullptr);
QCheckBox(const QString &text, QWidget *parent = nullptr);

同样可以通过拖动控件创建,也可以使用代码直接创建,控件创建默认使用构造函数QCheckBox(QWidget *parent = nullptr);

如下图创建了三个单选按钮,其中,CheckBox通过拖拽控件创建,CheckBox1CheckBox2通过代码直接创建:

在这里插入图片描述

二、成员函数与信号

QCheckBox除了继承于QAbstractButton的信号外,还有一个自己的信号void stateChanged(int);,当复选框状态改变,会发出该信号,并返回复选框的状态,其中复选框的状态有三种:

ConstantValueDescription
Qt::Unchecked0未被选中
Qt::PartiallyChecked1部分被选中,即复选框有子项且子项未被全部选中
Qt::Checked2被选中

QCheckBox的成员函数除了继承于QAbstractButton外,还有两个比较常用,

函数原型描述
void setTristate(bool y = true);设置复选框是否可为三种状态,函数参数默认为true,但该属性默认为false
bool isTristate() const;获取复选框是否可为三种状态
void setCheckState(Qt::CheckState state);设置复选框状态
Qt::CheckState checkState() const;获取复选框状态

三、示例

1. 设置复选框是否可为三种状态
checkBox2->setTristate(true);

在这里插入图片描述

如图,分别展示了CheckBox的三种状态。

2. 设置复选框状态

除了通过鼠标点击改变复选框状态,还可以通过代码设置:

在这里插入图片描述

其中复选框状态由枚举列出:

enum CheckState {
    Unchecked,
    PartiallyChecked,
    Checked
};
3. 通过复选框状态作相应操作
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

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

    QCheckBox* checkBox1 = new QCheckBox("CheckBox1", this);
    checkBox1->setGeometry(QRect(130, 160, 111, 22));

    QCheckBox* checkBox2 = new QCheckBox("CheckBox2", this);
    checkBox2->setGeometry(QRect(130, 190, 111, 22));
    checkBox2->setTristate(true);
    checkBox2->setCheckState(Qt::CheckState::Checked);

    connect(checkBox2, SIGNAL(stateChanged(int)),
            this, SLOT(checkBox2CallBack(int)));
}

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

void Widget::checkBox2CallBack(int state)
{
    switch(state)
    {
    case Qt::CheckState::Checked:
        qDebug("checkBox2 is checked.");
        break;
    case Qt::CheckState::PartiallyChecked:
        qDebug("checkBox2 is partiallyChecked.");
        break;
    case Qt::CheckState::Unchecked:
        qDebug("checkBox2 is unchecked.");
        break;
    default:
        break;
    }
}

打印结果如下:

在这里插入图片描述

4. 通过多个复选框状态作相应操作

这里可以借助按钮组(QButtonGroup),代码如下:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QButtonGroup>

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

    QCheckBox* checkBox1 = new QCheckBox("CheckBox1", this);
    checkBox1->setGeometry(QRect(130, 160, 111, 22));

    QCheckBox* checkBox2 = new QCheckBox("CheckBox2", this);
    checkBox2->setGeometry(QRect(130, 190, 111, 22));

    m_btnGroup = new QButtonGroup(this);
    m_btnGroup->addButton(ui->checkBox, 0);
    m_btnGroup->addButton(checkBox1, 1);
    m_btnGroup->addButton(checkBox2, 2);

    connect(m_btnGroup, SIGNAL(idClicked(int)),
            this, SLOT(btnGroupCallBack(int)));
}

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

void Widget::btnGroupCallBack(int btn)
{
    if (m_btnGroup->button(btn)->isChecked())
    {
        switch(btn)
        {
        case 0:
            qDebug("checkBox0 is checked.");
            break;
        case 1:
            qDebug("checkBox1 is checked.");
            break;
        case 2:
            qDebug("checkBox2 is checked.");
            break;
        default:
            break;
        }
    }
}

打印结果如下:

在这里插入图片描述

  • 13
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: QTableView 是一个显示表格数据的控件,它提供了一种在界面上展示数据的方式,可以方便地查看和编辑表格数据。 QCheckBox 是一个单选框控件,它提供了一种选择或取消选择某个选项的方式。当需要用户在多个选项中进行单选操作时,可以使用 QCheckBox 控件来增加用户的交互体验。 在使用 QTableView 和 QCheckBox 控件时,可以将 QCheckBox 添加到 QTableView 的某一列中的每一个单元格中,用来标识该行数据是否被选中。这样就可以实现在表格中选择或取消选择某些特定的行数据。 当用户点击某个 QCheckBox 控件时,可以通过信号和槽机制来捕捉到 QCheckBox 被选中或取消选中的事件,然后根据事件来改变 QTableView 中相应行数据的状态。 除此之外,还可以通过通过编程的方式操作 QCheckBox 控件,例如通过代码设置某一行的 QCheckBox 控件为选中状态或取消选中状态,或者获取某一行 QCheckBox 控件的状态来进行相关的处理。 总之,使用 QTableView 和 QCheckBox 控件可以方便地对表格数据进行展示和选择操作,提供了一种方便和快捷的方式来处理表格数据。 ### 回答2: QTableView是一个表格视图,它是Qt中数据展示的一种常用方式。它可以显示一张表格,其中包含了行和列的数据。 QCheckbox是一个复选框,它是Qt中常用的一种控件。它可以同时显示未选中和选中两种状态,并且可以通过用户的操作来切换状态。 当我们将这两个控件结合使用时,可以实现一些有趣的功能。 例如,我们可以在QTableView中的某一列中插入QCheckbox,这样每一行都会有一个复选框。用户可以通过勾选或取消勾选这些复选框来选择其中的某些行。 此外,我们还可以编写代码来实现全选或全不选的功能。比如,当用户点击一个全选的复选框时,所有的行的复选框都会变为选中状态,当用户取消勾选全选的复选框时,所有的行的复选框都会变为未选中状态。 我们还可以在QTableView中使用QCheckbox来控制一些与数据相关的操作。比如,当用户勾选某个复选框时,可以执行某个特定的操作,比如删除该行的数据。 综上所述,QTableView和QCheckbox是两个常用的Qt控件,结合使用可以实现很多有用的功能。在开发Qt应用程序时,我们可以根据具体需求来使用它们,提供更好的用户体验。 ### 回答3: QTableView和QCheckBoxQt框架中常用的两个控件。 QTableView是一个表格视图控件,用于显示二维数据。通过QTableView,可以将数据以表格的形式展示出来,并支持对数据进行排序、筛选、编辑等操作。QTableView可以根据需要自定义表头、行数、列数、单元格内容和格式等。同时,还可以通过设置不同的选择模式,实现单选、多选或无选择的功能。 QCheckBox则是一个复选框控件,用于表示二选一或多选一的状态。通过QCheckBox,用户可以在多个选项中进行选择,并可以通过勾选或取消勾选的方式改变其状态。QCheckBox可以设置默认状态、选中状态、禁用状态等,并且可以通过信号和槽机制,实现对状态变化的响应。 在使用QTableView时,可以将QCheckBox作为一个自定义的编辑控件嵌入到表格中的某一列,用于表示某个特定的列为复选框的选择状态。例如,在一个任务列表中,可以将某一列设为复选框,用于选择是否完成相应的任务。这样,用户可以通过对复选框进行勾选或取消勾选的操作来改变任务的完成状态。 总而言之,QTableView和QCheckBoxQt框架中十分有用的两个控件。通过QTableView,可以轻松地展示和处理二维数据,而QCheckBox则为用户提供了一种方便的选择和控制状态的方式。它们的结合使用,可以帮助我们开发出更加灵活和交互性的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万俟淋曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值