【问题标题】:qcheckbox not changing checked state when clicked onqcheckbox 在单击时不会更改选中状态
【发布时间】:2017-06-07 10:51:33
【问题描述】:

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

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

我为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"

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

【问题讨论】:

    标签: qt checkbox signals-slots qcheckbox


    【解决方案1】:

    这里有一个可能的解决方案来解决这个“缺少复选/标记”的问题。

    我实现了从 qt form post 得到的 CSS“指示器”解决方案,这是有问题的。

    解决方案来源:

    示例实现:

    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 指的是“实际背景”(在复选框和复选框文本的后面)

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多