对于已经存在的 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
绘制(此类不是公共(public) API 的一部分)。
因此,您必须完全设置旋转框的样式,包括向上/向下按钮,或者根本不使用样式表。
向上/向下按钮不是独立的小部件,因此您不能对它们应用不同的样式。
所以我建议子类化 QSpinBox
并重新实现 paintEvent()
方法。在您的 paintEvent()
方法中,您只需调用它的默认实现,然后在周围绘制一个矩形。
关于c++ - 聚焦时为 QSpinBox 设置边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162425/