Qt技术笔记(八):QCheckBox 多选框笔记
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发窗体的应用程序,在Qt中我们需要可以通过拖拽的方式将不同组件放在指定的位置,实现图形开发极大的方便了开发效率,本章将重工点介绍QCheckBox多选框组件的常用方法及灵活的运用。
首先,你需要调用包含Qt框架中与QCheckBox相关的头文件:
/* by 01130.hk - online tools website : 01130.hk/zh/generatematicwallets.html */ #include <QCheckBox>1.控件简介及常用方法接口
QCheckBox是Qt中用于实现复选框的组件,它提供了丰富的功能和灵活性。与RadiButton组件不同,CheckBox组件支持多项选择以及三态选择,即可以是选中、未选中或半选中的状态。下面是QCheckBox的主要方法的概述和功能:
| 方法接口 | 功能描述 |
|---|---|
QCheckBox(QWidget *parent = nullptr) | 构造函数,创建一个QCheckBox组件。 |
isChecked() const | 返回复选框的当前状态,选中返回true,否则返回false |
setCheckState(Qt::CheckState state) | 设置复选框的状态,可以是Qt::Unchecked、Qt::PartiallyChecked或Qt::Checked。 |
checkState() const | 返回复选框的当前状态,枚举类型Qt::CheckState。 |
setTristate(bool) | 启用或禁用三态复选框的功能。 |
isTristate() const | 返回是否启用了三态复选框的功能。 |
setCheckable(bool checkable) | 设置复选框是否可以被选中,true表示可以选中,false表示不能选中。 |
isChecked() const | 返回复选框的当前状态,选中返回true,否则返回false。 |
setChecked(bool check) | 设置复选框的状态,true 表示选中,false 表示未选中。 |
text() const | 返回复选框的文本标签。 |
setText(const QString &text) | 设置复选框的文本标签。 |
stateChanged(int) | 复选框状态变化时发射的信号,参数是枚举类型Qt::CheckState,可以是Qt::Unchecked、Qt::PartiallyChecked或Qt::Checked。 |
其中重要的数据类型中:Qt::CheckState的枚举类型 反映QCheckBox的选中状态:
| 枚举值 | 值 | 详解 |
|---|---|---|
Qt::Unchecked | 0 | 未选中 |
Qt::PartiallyChecked | 1 | 半选中 |
Qt::Checked | 2 | 选中 |
创建QCheckBox
你可以通过以下方式创建一个QCheckBox对象:
/* by 01130.hk - online tools website : 01130.hk/zh/generatematicwallets.html */ QCheckBox *checkBox = new QCheckBox("Check me", this); // "Check me" 是复选框旁边的文本设置和获取状态
你可以设置复选框的状态(选中或未选中):
checkBox->setChecked(true); // 设置复选框为选中状态获取复选框的状态:
bool isChecked = checkBox->isChecked(); // 返回复选框是否被选中信号与槽
QCheckBox提供了一个信号stateChanged,当复选框的状态改变时,这个信号会被触发。你可以连接这个信号到一个槽函数来响应状态的改变:
connect(checkBox, &QCheckBox::stateChanged, this, &YourClass::onCheckBoxStateChanged); void YourClass::onCheckBoxStateChanged(int state) { if (state == Qt::Checked) { // 复选框被选中时的逻辑 } else { // 复选框未被选中时的逻辑 } }自定义样式
你还可以通过样式表(StyleSheet)来自定义QCheckBox的外观:
checkBox->setStyleSheet("QCheckBox::indicator { width: 13px; height: 13px; }")将QCheckBox添加入布局中
在Qt中,通常会将控件放入布局管理器中,以便于管理控件的位置和大小。例如,将QCheckBox放入水平布局:
QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(checkBox);2.代码示例
下面是一个简单的示例,展示了如何在Qt中使用QCheckBox:
#include <QApplication> #include <QWidget> #include <QCheckBox> #include <QVBoxLayout> class MainWindow : public QWidget { public: MainWindow() { QCheckBox *checkBox = new QCheckBox("Check me", this); connect(checkBox, &QCheckBox::stateChanged, this, &MainWindow::onCheckBoxStateChanged); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(checkBox); } void onCheckBoxStateChanged(int state) { if (state == Qt::Checked) { qDebug() << "CheckBox is checked"; } else { qDebug() << "CheckBox is unchecked"; } } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); }这个示例创建了一个主窗口,其中包含一个复选框,并且当复选框的状态改变时,会在控制台输出相应的信息。