【发布时间】:2016-02-04 00:13:14
【问题描述】:
任何使复选框只读的好方法,但也不灰显(几乎不可见)。
- 我使用了
setEnabled(bool),它可以工作,但复选框是灰色的,难以阅读 - 我可以对切换信号做出反应并重置状态。但我需要一种标志来确定该框是否为只读,然后重置检查状态,这意味着我需要创建自己的
CheckBox类。 -
setCheckable也不起作用,它根本不允许我设置检查状态:cb = this->ui->cb_RealWorld->isCheckable(); this->ui->cb_RealWorld->setCheckable(true); this->ui->cb_RealWorld->setChecked(someValue); this->ui->cb_RealWorld->setCheckable(cb);
所以我最好的办法是使用启用/禁用并接受灰色样式。
------- 编辑 -------
在stylesheet examples 之后,我希望我可以设置禁用复选框的样式,就像启用的复选框一样。到目前为止未能这样做。更具体地说:更改 examples 中的图标对我不起作用,可能是因为我使用的是 Windows,并且图标在示例中的路径下不可用。
PS:相关,但这里没有答案
Disabling a QCheckbox in a tricky way
Qt - How to disable QCheckBox while retaining checked state?
【问题讨论】:
-
“只读”是什么意思?复选框不记录信息,而只记录某物的状态。
-
只读:用户无法更改复选框状态,例如在 QLineEdit 中,用户无法更改只读文本
-
顺便说一句,我不明白反对意见。不过没关系。
-
这根本没有意义。如果您有一个将始终被选中的复选框并且用户无法修改它,那么显示一个复选框甚至可以选择修改状态有什么意义呢?这是一种味道,但不要碰这里的情况;你在这里的推理是有缺陷的。为我们提供一些背景来证明其他情况。
-
不是没用。我有一个表格,它可以是可编辑的,也可以是只读的。复选框显示 true(选中)或 false(未选中)。我在哪里说过它会一直被检查(请让我知道,这样我就可以修复那个部分)。只有经过身份验证的用户才能修改复选框,但在只读模式(匿名用户)下,我仍然想显示 true 或 false。而且我想用一个复选框来显示真/假,只是我不希望它被修改。