#include "CustomCheckBox.h" #include 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 }