1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include "CustomCheckBox.h"
- #include <QDebug>
- CustomCheckBox::CustomCheckBox(QWidget* parent)
- : QCheckBox(parent)
- {
- // 连接 checked 信号,当勾选状态改变时执行 setEditColor
- connect(this, &QCheckBox::toggled, this, [=](bool checked) {
- m_valueChangeFlag = true; // 标记值已更改
- });
- // 连接 editingFinished 信号来处理编辑完成事件
- connect(this, &QCheckBox::toggled, this, [=]() {
- if (m_valueChangeFlag) {
- emit editDone(); // 发出编辑完成信号
- setEditColor(); // 改变颜色
- m_valueChangeFlag = false; // 重置标志
- }
- });
- }
- CustomCheckBox::~CustomCheckBox() {}
- void CustomCheckBox::setEditColor()
- {
- if (this->isChecked() != m_oldVal) {
- setStyleSheet("color: red;"); // 修改文字颜色为红色
- // setStyleSheet("background-color: red"); // 可改为修改背景颜色
- }
- else {
- setStyleSheet(""); // 恢复默认样式
- }
- }
- void CustomCheckBox::setSavedColor()
- {
- setStyleSheet(""); // 恢复为默认样式
- m_oldVal = this->isChecked(); // 保存当前状态
- m_countClicked = 0;
- }
- void CustomCheckBox::setChecked(bool checked)
- {
- if (m_countClicked == 0) m_oldVal = checked; // 首次设置时,记录原始值
- m_countClicked++;
- QCheckBox::setChecked(checked); // 调用父类的 setChecked
- }
|