当旋转框中的值处于最大值或最小值时,我试图使旋转框上的箭头按钮显示为禁用。
我正在使用一个QStyleSheet,它包含:
QAbstractSpinBox::up-arrow:off, QAbstractSpinBox::up-arrow:disabled {
background: #131313;
}但是,当我将spinbox设置为最大值时,没有设置“off”伪状态。因此,这种风格永远不会被应用。
我试过:
我知道样式的读取是正确的,因为如果我完全禁用SpinBox,就会出现这种样式。
有什么想法吗?
发布于 2021-05-11 20:08:45
大多数自旋框都是定向的,但是QSpinBox也可以作为一个圆形旋转盒运行,也就是说,如果范围为0-99,而当前值为99,单击"up“将给出0如果包装()设置为true。如果您想要循环行为,请使用辅助setWrapping()。
发布于 2022-08-16 16:29:24
你必须打开QStyle::SH_SpinControls_DisableOnBounds
#include <QApplication>
#include <QProxyStyle>
class MyProxyStyle : public QProxyStyle
{
public:
int styleHint(StyleHint hint, const QStyleOption *option = nullptr,
const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override
{
if (hint == QStyle::SH_SpinControls_DisableOnBounds)
return 1;
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
int main(int argc, char **argv)
{
QApplication a(argc, argv);
a.setStyle(new MyProxyStyle);
// ...
}https://stackoverflow.com/questions/67308111
复制相似问题