Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 聚焦时为QSpinBox设置边框_C++_Qt_Qtstylesheets - Fatal编程技术网

C++ 聚焦时为QSpinBox设置边框

C++ 聚焦时为QSpinBox设置边框,c++,qt,qtstylesheets,C++,Qt,Qtstylesheets,对于已经存在的Qt项目,我想通过qss fle为聚焦的小部件设置边界。但我面临着一些意想不到的结果。当我改变QSpinBox(和QDoubleSpinBox)的边框时,边框会像我预期的那样改变,但向上按钮和向下按钮也会改变,看起来很难看 以下是我的样式定义(提供完整示例): 我的问题是:如何更改边框的外观,同时保留向上按钮和向下按钮的外观。我所寻找的解决方案不应该是跨平台或跨版本的 我的环境: -KUbuntu 15.10(amd64) -Qt 5.4(x64) 更新: 下面是另一个样式的示例

对于已经存在的Qt项目,我想通过qss fle为聚焦的小部件设置边界。但我面临着一些意想不到的结果。当我改变
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;
}