首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚焦时为QSpinBox设置边框

聚焦时为QSpinBox设置边框
EN

Stack Overflow用户
提问于 2016-02-02 19:41:02
回答 2查看 3.7K关注 0票数 8

对于已经存在的Qt项目,我希望通过qss为重点部件设置边界。但我面对的是一些意想不到的结果。当我更改QSpinBox (和QDoubleSpinBox)的边框时,会像我预期的那样改变边框,但是向上键和向下键也会改变,看起来很难看。

下面是我的风格定义(可用的完整示例这里):

代码语言:javascript
复制
QSpinBox:focus
{
    border-width: 2px;
    border-style: solid;
    border-color: green;
}

我的问题是:如何改变边框的外观,同时保持向上按钮和向下按钮的外观。解决方案,我正在寻找的不应该是跨平台或跨版本。

我的环境:

  • KUbuntu 15.10 (amd64);
  • Qt 5.4 (x64)。

更新

下面是另一个风格的例子:

代码语言:javascript
复制
QSpinBox
{
    border-width: 2px;
    border-style: solid;
    border-color : red;
}

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

该小部件如下所示:

EN

回答 2

Stack Overflow用户

发布于 2016-02-05 15:19:37

当您将样式表应用到QSpinBox时,这个小部件将完全使用QStyleSheetStyle绘制(这个类不是公共API的一部分)。

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

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

因此,我建议对QSpinBox进行子类化,并重新实现paintEvent()方法。在您的paintEvent()方法中,您只需调用它的默认实现,然后在周围画一个矩形。

票数 4
EN

Stack Overflow用户

发布于 2016-02-03 22:12:47

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

代码语言:javascript
复制
QSpinBox
{
    border-width: 2px;
    border-style: solid;
    border-color : red;
}

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

编辑:

我看你的箭还没有射出,所以我建议你做两件事:

  • 样式还带有背景图像属性的上下箭头(使用所需arrows..or so的屏幕截图)
  • 通过样式表格式化此部件,并通过代码重写"QPaintEvent onFocus处理程序“。把边界设置成绿色不会那么痛苦
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35162425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档