C++ 聚焦时为QSpinBox设置边框
对于已经存在的Qt项目,我想通过qss fle为聚焦的小部件设置边界。但我面临着一些意想不到的结果。当我改变C++ 聚焦时为QSpinBox设置边框,c++,qt,qtstylesheets,C++,Qt,Qtstylesheets,对于已经存在的Qt项目,我想通过qss fle为聚焦的小部件设置边界。但我面临着一些意想不到的结果。当我改变QSpinBox(和QDoubleSpinBox)的边框时,边框会像我预期的那样改变,但向上按钮和向下按钮也会改变,看起来很难看 以下是我的样式定义(提供完整示例): 我的问题是:如何更改边框的外观,同时保留向上按钮和向下按钮的外观。我所寻找的解决方案不应该是跨平台或跨版本的 我的环境: -KUbuntu 15.10(amd64) -Qt 5.4(x64) 更新: 下面是另一个样式的示例
QSpinBox
(和QDoubleSpinBox
)的边框时,边框会像我预期的那样改变,但向上按钮和向下按钮也会改变,看起来很难看
以下是我的样式定义(提供完整示例):
我的问题是:如何更改边框的外观,同时保留向上按钮和向下按钮的外观。我所寻找的解决方案不应该是跨平台或跨版本的
我的环境:-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文件,看看它是否一致
QSpinBox
{
border-width: 2px;
border-style: solid;
border-color : red;
}
QSpinBox:hover
{
border-width: 2px;
border-style: solid;
border-color: blue;
}
编辑:
我看到你的箭仍然不好,所以我建议你做两件事:
- 还可以使用背景图像属性等设置上下箭头的样式(拍摄所需箭头的屏幕截图..等)
- 伪造者通过样式表设置此部件的样式,并通过代码覆盖“QPaintEvent onFocus处理程序”。将边界设置为绿色不会如此痛苦
QSpinBox
时,此小部件将使用QStyleSheetStyle
完全绘制(此类不是公共API的一部分)
因此,您要么完全设置旋转框的样式,包括向上/向下按钮,要么根本不使用样式表
向上/向下按钮不是分开的小部件,因此不能对它们应用不同的样式
因此,我建议对
QSpinBox
进行子类化,并重新实现paintEvent()
方法。在您的paintEvent()
方法中,您只需调用它的默认实现,然后在其周围绘制一个矩形。我想您已经尝试为上箭头和下箭头设置样式了吧?如果没有qss示例,您的问题可能是由于将“焦点”样式传播到整个小部件,包括箭头,特别是带有属性的边框。。这可能会导致这种意外behavior@floppy12,我没有试过。我很难复制按钮的外观。你们不应该完全复制它;我的意思是,你应该精确一个样式,甚至是一个默认样式,以防止你“聚焦”样式覆盖它-从下面的链接中举一个例子,尝试一下它的价值:我在Windows上的Qt5.4上得到一个非常类似的行为,当你将样式表设置为spinbox时——按钮看起来很难看。实际上,似乎一旦您对spinbox进行了任何样式表更改,您也必须通过样式表来指定其余部分(如floppy12所建议的)。但是真的:我们(即OP)是否应该提供我们自己的手工制作的up\u arrow.png
等来进行简单的样式更改?这有多糟糕?我同意GLUTON的观点,这很难!第一个案例对我来说很糟糕。第二种情况或多或少是可以接受的,但无论如何这不是一个解决方案。正是我建议的+1.
QSpinBox
{
border-width: 2px;
border-style: solid;
border-color : red;
}
QSpinBox:hover
{
border-width: 2px;
border-style: solid;
border-color: blue;
}