c++ - 聚焦时为 QSpinBox 设置边框

标签 c++ qt qtstylesheets

对于已经存在的 Qt 项目,我想通过 q​​ss-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 绘制(此类不是公共(public) API 的一部分)。

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

向上/向下按钮不是独立的小部件,因此您不能对它们应用不同的样式。

所以我建议子类化 QSpinBox 并重新实现 paintEvent() 方法。在您的 paintEvent() 方法中,您只需调用它的默认实现,然后在周围绘制一个矩形。

关于c++ - 聚焦时为 QSpinBox 设置边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162425/

相关文章:

c++ - 删除指向指针列表的指针

c++ - add_library 没有使用 c 源代码创建 .lib

c++ - 如何在 Qt 中创建静态 QLabel

c++ - 用qml ListView显示Json数据

c++ - 如何使用 QGraphicsScene::setStyle()?

c++ - 使用 gst 管道播放多个音频文件

c++ - QMdiSubWindow 的初始大小

javascript - 将 jQuery Mobile 与 cordova-qt 结合使用

qt - QWidget 覆盖 Qscrollarea CSS

c++ - 从 "fusion"样式的 QTreeView 中删除蓝色选择