![](/img/trans.png)
[英]How can I make a QCheckBox for (un)checking several QCheckBoxes?
[英]How to make QCheckBox readonly, but not grayed-out
任何使复选框只读但也不会变灰(几乎不可见)的好方法。
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);
所以我最好的办法是使用启用/禁用并接受灰色样式。
- - - - 编辑 - - - -
按照样式表示例,我希望可以设置禁用复选框的样式,例如启用复选框。 到目前为止未能这样做。 更具体:更改示例中的图标对我不起作用,可能是因为我使用的是 Windows,并且图标在示例中的路径下不可用。
PS:相关,但这里没有答案
按照下面的我的代码:
this->ui->cb_RealWorld->setAttribute(Qt::WA_TransparentForMouseEvents);
this->ui->cb_RealWorld->setFocusPolicy(Qt::NoFocus);
这是 Devopia 作为函数的解决方案:
void SetReadOnly(QCheckBox* checkBox, bool readOnly)
{
checkBox->setAttribute(Qt::WA_TransparentForMouseEvents, readOnly);
checkBox->setFocusPolicy(readOnly ? Qt::NoFocus : Qt::StrongFocus);
}
在 Windows 上,请记住#include "windows.h"
并设置如下标志:
this->ui->cb_RealWorld->setWindowFlags(this->ui->cb_RealWorld->windowFlags() | Qt::WindowTransparentForInput);
从 QCheckBox 继承并覆盖 nextCheckState 方法https://doc.qt.io/qt-5/qcheckbox.html#nextCheckState可以解决问题。
void ReadOnlyCheckBox::nextCheckState()
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.