如何使QCheckBox只读,但不灰显
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:相关,但这里没有答案
以棘手的方式
禁用 QCheckboxQt - 如何在保持选中状态的同时禁用QCheckBox?
按照下面的代码:
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()
{
}
相关文章:
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- std::vector的包装器,使数组的结构看起来像结构的数组
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 找到两对数字,使它们的乘积的绝对差最小化
- C++:如何使函数只返回作为列表一部分的字符串
- Python中的for循环与C++有何不同
- c++使用foreach使数组为null
- 使外部项目可用于find_package CMake
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 是否可以在C++中使变量真正只读
- 有可能使shared_ptr协变吗
- 使lambda不可复制/不可移动
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 如何使用OpenMP使这个循环并行
- 根据变量使Qt UI中的复选框为已选中/未选中
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 取消选中/选中 QCheckBox 后使 QLabel 不可见/可见
- 如何使QCheckBox只读,但不灰显
- C++11编译器何时会使RVO和NRVO优于移动语义和常量引用绑定