2016-02-02 27 views
3

对于已经存在的Qt项目,我希望通过qss-fle为重点小工具设置边框。但是我遇到了一些意想不到的结果。当我更改QSpinBox(和QDoubleSpinBox)的边框时,边框会随着我的预期发生变化,但上按钮和下按钮也会发生变化,看起来很丑。为QSpinBox设置对焦时的边框

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

+0

我想你已经试图为你的向上箭头和向下箭头设置样式?如果不存在qss示例,请访问http://doc.qt.io/qt-4.8/stylesheet-examples。html#customizing-qspinbox – floppy12

+0

你的问题可能是由于你的“焦点”风格传播到包括箭头在内的整个小部件,特别是边界属性..这可能会导致这种意外的行为 – floppy12

+0

@ floppy12,我有不要尝试。我很难再现按钮的外观。 – Gluttton

回答

2

尝试编辑您的QSS文件,另一种随机样式,看它是否一致。

QSpinBox 
{ 
    border-width: 2px; 
    border-style: solid; 
    border-color : red; 
} 

QSpinBox:hover 
{ 
    border-width: 2px; 
    border-style: solid; 
    border-color: blue; 
} 

编辑:

我看到你的箭仍然状态不佳,所以我会建议你两件事情:使用背景图片的属性或

  • 风格也是你的上下箭头所以(拍摄所需箭头的屏幕截图..等)

  • 伪造风格这部分通过stylesheet并通过代码重写“QPaintEvent onFocus处理程序”。设置边框为绿色就不会那么痛苦

+0

我已经更新了我的问题。 – Gluttton

+0

编辑建议 – floppy12

+0

第一种情况对我来说很不好。第二种情况或多或少是可以接受的,但无论如何,这不是一个解决方案。 – Gluttton

3

当您将样式表的QSpinBox,这个小部件是使用QStyleSheetStyle(本类不是公共API)完全画。

因此,您必须完全调整您的旋钮盒,包括向上/向下按钮或完全不使用样式表。

上/下按钮不是分离的小部件,所以你不能对它们应用不同的样式。

所以我建议子类QSpinBox和重新实现paintEvent()方法。在你的paintEvent()方法中,你可以称它为默认的实现,并且你会画一个矩形。

+0

正是我所建议的...... +1 – floppy12