Qt技术笔记(八):QCheckBox 多选框笔记
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发窗体的应用程序,在Qt中我们需要可以通过拖拽的方式将不同组件放在指定的位置,实现图形开发极大的方便了开发效率,本章将重工点介绍QCheckBox 多选框组件的常用方法及灵活的运用。
首先,你需要调用包含Qt框架中与QCheckBox相关的头文件:
c++
#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对象:
C++
QCheckBox *checkBox = new QCheckBox("Check me", this); // "Check me" 是复选框旁边的文本
设置和获取状态
你可以设置复选框的状态(选中或未选中):
c++
checkBox->setChecked(true); // 设置复选框为选中状态
获取复选框的状态:
c++
bool isChecked = checkBox->isChecked(); // 返回复选框是否被选中
信号与槽
QCheckBox提供了一个信号stateChanged,当复选框的状态改变时,这个信号会被触发。你可以连接这个信号到一个槽函数来响应状态的改变:
C++
connect(checkBox, &QCheckBox::stateChanged, this, &YourClass::onCheckBoxStateChanged);
void YourClass::onCheckBoxStateChanged(int state) {
if (state == Qt::Checked) {
// 复选框被选中时的逻辑
} else {
// 复选框未被选中时的逻辑
}
}
自定义样式
你还可以通过样式表(StyleSheet)来自定义QCheckBox的外观:
C++
checkBox->setStyleSheet("QCheckBox::indicator { width: 13px; height: 13px; }")
将QCheckBox添加入布局中
在Qt中,通常会将控件放入布局管理器中,以便于管理控件的位置和大小。例如,将QCheckBox放入水平布局:
C++
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(checkBox);
2.代码示例
下面是一个简单的示例,展示了如何在Qt中使用QCheckBox:
c++
#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();
}
这个示例创建了一个主窗口,其中包含一个复选框,并且当复选框的状态改变时,会在控制台输出相应的信息。