c – 聚焦时设置QSpinBox的边框
作者:互联网
对于已经存在的Qt项目,我想通过qss-fle为焦点小部件设置边框.但是我遇到了一些意想不到的结果.当我更改QSpinBox(和QDoubleSpinBox)的边框时,边框会像我预期的那样改变,但是上按钮和下按钮也会改变并且看起来很难看.
这是我的风格定义(完整示例here):
QSpinBox:focus
{
border-width: 2px;
border-style: solid;
border-color: green;
}
我的问题是:如何更改边框的外观,同时保持上下按钮和下按钮的外观.我正在寻找的解决方案不应该是跨平台或跨版本.
我的环境:
– KUbuntu 15.10(amd64);
– Qt 5.4(x64).
更新:
这是另一个样式的另一个例子:
QSpinBox
{
border-width: 2px;
border-style: solid;
border-color : red;
}
QSpinBox:hover
{
border-width: 2px;
border-style: solid;
border-color: blue;
}
小部件看起来像这样:
解决方法:
将样式表应用于QSpinBox时,使用QStyleSheetStyle完全绘制此窗口小部件(此类不是公共API的一部分).
因此,您必须完全设置旋转框的样式,包括向上/向下按钮,或者根本不使用样式表.
上/下按钮不是分隔的小部件,因此您无法对它们应用不同的样式.
所以我建议继承QSpinBox并重新实现paintEvent()方法.在paintEvent()方法中,您只需调用它的默认实现,而不是绘制一个矩形.
标签:qtstylesheets,c,qt 来源: https://codeday.me/bug/20190829/1760443.html