Qt QCheckBox 使用
1.开发背景
Qt QCheckBox 是勾选组件,具体使用方法可以参考 Qt 官方文档,这里只是记录使用过程中常用的方法示例和遇到的一些问题。
2.开发需求
QCheckBox 使用和踩坑
3.开发环境
Window10 + Qt5.12.2 + QtCreator4.8.2
4.功能简介
4.1 简单接口
QCheckBox 继承了 QAbstractButton、QWidget、QObject 和 QPaintDevice,父对象的接口都能用,另外独有接口 setCheckState 、checkState 等
4.2 信号接口
除了继承的信号,主要还是使用信号 stateChanged
5.踩坑现场
5.1 信号 stateChanged 中使用 setChecked 不会立刻刷新状态
connect(ui->checkBox_RxSaveFile, &QCheckBox::stateChanged, this, [this](int state){if (state == Qt::Unchecked){m_p->isRxSaveFile = false;m_p->rxSavePath.clear();}else if (state == Qt::Checked){/* 获取当前时间并格式化为字符串(如 "2024-01-01_12-00-00")*/m_p->isRxSaveFile = true;QString timestamp = QDateTime::currentDateTime().toString("yyyy-MM-dd_HH-mm-ss");QString defaultFileName = "./" + timestamp + ".txt";QString fileName = QFileDialog::getSaveFileName(this, "保存文件",defaultFileName, "文本文件 (*.txt);;所有文件 (*)");if (fileName.isEmpty()){m_p->isRxSaveFile = false;ui->checkBox_RxSaveFile->setChecked(false);ui->checkBox_RxSaveFile->setCheckState(Qt::Unchecked); // 需要单独设置状态}else{m_p->rxSavePath = fileName;}}});
需要使用 setCheckState 设置当前的状态,不然第二次点击不会触发信号