qcheckbox在单击时不更改选中状态

时间:2017-01-23 00:29:24

标签: qt checkbox signals-slots qcheckbox

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

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

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

复选框中只更改了3个设置:

  1. 组件文字
  2. 组件名称
  3. 组件Checkedstate:已检查。
  4. 我在页面上添加了另一个复选框,重新编译并运行它而不更改任何内容。同样,这个新的复选框不会响应更改。

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

    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"
    

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

1 个答案:

答案 0 :(得分:1)

这是一个可能的解决方案,用于解决此问题"缺少检查/标记"问题。

我实施了CSS"指标"我从qt form post获得的解决方案是有问题的。

解决方案来源:

示例实施:

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)将是您想要的背景颜色,例如你的窗口背景颜色。

QPallete::ActiveQPalette::base是指有效复选框的背景(白框背景)

QPalette::Button指的是"实际背景" (在复选框和复选框文本后面)

希望这有帮助!