其他分享
首页 > 其他分享> > c – 聚焦时设置QSpinBox的边框

c – 聚焦时设置QSpinBox的边框

作者:互联网

对于已经存在的Qt项目,我想通过qss-fle为焦点小部件设置边框.但是我遇到了一些意想不到的结果.当我更改QSpinBox(和QDoubleSpinBox)的边框时,边框会像我预期的那样改变,但是上按钮和下按钮也会改变并且看起来很难看.

enter image description here

这是我的风格定义(完整示例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;
}

小部件看起来像这样:

enter image description here

解决方法:

将样式表应用于QSpinBox时,使用QStyleSheetStyle完全绘制此窗口小部件(此类不是公共API的一部分).

因此,您必须完全设置旋转框的样式,包括向上/向下按钮,或者根本不使用样式表.

上/下按钮不是分隔的小部件,因此您无法对它们应用不同的样式.

所以我建议继承QSpinBox并重新实现paintEvent()方法.在paintEvent()方法中,您只需调用它的默认实现,而不是绘制一个矩形.

标签:qtstylesheets,c,qt
来源: https://codeday.me/bug/20190829/1760443.html