单击时qcheckbox不更改选中状态

qcheckbox not changing checked state when clicked on

我一直在开发一个 GUI,运行 遇到一个问题(或可能的错误)QCheckBox

将 QCheckBox 组件添加到我的表单,编译和 运行ning 它没有问题。但是,当单击复选框时,没有显示任何可见的反馈。

我为 clicked(bool) 信号添加了一个侦听器它用于调试输出以显示当前状态,它确实发生了变化。

复选框上仅更改了 3 个设置:

  1. 组件文本
  2. 组件名称
  3. 组件已检查状态:已检查。

我在页面上添加了另一个复选框,重新编译并 运行 它没有做任何更改。同样,这个新复选框不会响应更改。

此外,我创建了一个新项目,只添加了一个复选框,编译并 运行 它。显示状态更改没有问题。一定是我的项目有问题。

stateChanged(int)clicked(bool)信号的输出:(qDebug()输出)

QCHECKBOX STATE (stateChanged):  "2"
QCHECKBOX STATE (clicked):  "checked"
QCHECKBOX STATE (stateChanged):  "0"
QCHECKBOX STATE (clicked):  "unchecked"
QCHECKBOX STATE (stateChanged):  "2"
QCHECKBOX STATE (clicked):  "checked"
QCHECKBOX STATE (stateChanged):  "0"
QCHECKBOX STATE (clicked):  "unchecked"

如果需要任何其他项目信息,请随时发表评论

这是解决此 "missing check/mark" 问题的 可能 解决方案。

我实施了从这个 qt form post 中得到的 CSS "indicator" 解决方案,这是有问题的。

解决方案来源:

示例实现:

QPalette p = ui->checkBox->palette();
p.setColor(QPalette::Active, QPalette::Base, QColor(255, 255, 255));
p.setColor(QPalette::Button, QColor(255, 255, 255));
ui->checkBox->setAutoFillBackground(true);
ui->checkBox->setPalette(p);

QColor(255, 255, 255) 将是您想要的背景颜色,例如你的 window 背景颜色。

QPallete::Active,QPalette::base指勾选框的背景(白框背景)

并且 QPalette::Button 指的是 "actual background" (在复选框和复选框文本后面)

希望对您有所帮助!