【发布时间】:2016-05-11 18:52:55
【问题描述】:
对于已经存在的 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;
}
小部件如下所示:
【问题讨论】:
-
我猜您已经尝试为向上箭头和向下箭头设置样式?如果没有,那里有 qss 示例doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qspinbox
-
您的问题可能是由于您的“焦点”样式传播到包括箭头在内的整个小部件,特别是border-with 属性。这可能导致这种意外行为
-
@floppy12,我没试过。我很难重现按钮的外观。
-
你不应该完全复制它;我的意思是你应该精确一个样式,甚至是一个默认样式,以防止你“聚焦”样式来覆盖它——从下面的链接中举一个例子并尝试一下
-
值得一提的是:在将样式表设置为旋转框时,我在 Windows 上的 Qt5.4 上得到了非常相似的行为——按钮看起来很难看。确实,似乎一旦您对旋转框进行了任何样式表更改,您就必须一路走下去并通过样式表指定其余部分(如 floppy12 建议的那样)。但实际上:我们(即 OP)是否应该提供我们自己的手工制作的
up_arrow.png等来进行简单的样式更改工作?这有多乱?我同意 Glutton 的观点,这会很困难!
标签: c++ qt qtstylesheets