在Qt中使用CSS自定义向下箭头按钮

时间:2011-11-08 00:40:49

标签: qt qtstylesheets

我们正在开发一种C ++表格的触摸屏Qt应用程序,它需要一个宽大的向下箭头图形图像以及一个自定义背景。我一直试图通过QSS获得一些有效的东西,但到目前为止已被击败。

我发现获得宽按钮(一个大于16像素)的唯一方法是使用负边距:

QComboBox {
    min-height:63px;
    max-height:63px;
    margin-right:47px;
    border-image:url(Resources/ComboBox_Center1.png);
    font-family:  "Franklin Gothic Medium";
    font-size:  22px;
}
QComboBox::drop-down {
    width:47px;
    border:0px;
    margin:0px;
    margin-right:-47px;
}
QComboBox::down-arrow {
    image:url(Resources/ComboBox_Right1.png);
}

这会将按钮置于正确的位置并使输入区域的大小正确,但是向下箭头只打开组合框,而不是打开然后关闭。

所有其他选项要么将输入区域扩展到区域(边距,边框),要么缩小整个控件。

设置背景图像标签无效 - 只有边框图像显示图像。

请注意,边框图像(或背景颜色)始终显示在箭头下方。

是否有某种方式来设置组合框的输入部分?似乎组合部分应该有自己的子选择器,但我还没有看到它。

1 个答案:

答案 0 :(得分:3)

试试这个......

QComboBox {
    min-height:63px;
    max-height:63px;
    font-family:  "Franklin Gothic Medium";
    font-size:  22px;
    padding: 1px 1px 1px 1px;
}
QComboBox::drop-down {
   width: 47px;
   border: 0px;
}

QComboBox::down-arrow {
    image: url(Resources/ComboBox_Right1.png);
    width: 42px;
    height: 42px;
}

注意:向下箭头图像的宽度和高度取决于您使用的图像。这些对我的形象起作用。

关于样式表有一些奇怪的事情 - 以及许多隐藏的技巧。值得花几分钟时间浏览this,其中描述了样式表工作方式背后的基本原理。它们看起来很简单,但即使使用它们一段时间后,我也经常回到示例和文档中。

背景图片是不明显的事情之一。这是我直接从文档中获取的内容。在大多数情况下,为背景设置图像时我们真正想要的是设置边框图像。我假设您没有看到“背景图像”的原因是组合框是一个“复杂”的小部件 - 意味着它由其他几个组成 - 并且背景隐藏在它们后面。

  

尝试使用background-image属性很常见,但这有一个   缺点:例如,经常会出现背景   隐藏在按钮装饰背后,因为它不被认为是   背景。另外,如果按钮调整大小,整个   背景将被拉伸或平铺,这并不总是看起来   好。最好使用border-image属性,因为它总是如此   无论背景如何,都可以显示图像(您可以将它组合起来   有背景,如果它有alpha值),它有特殊的   处理按钮大小调整的设置。

对于输入区域的样式...假设您的QComboBox是可编辑的,输入区域只是一个QLineEdit。因此,您始终可以将样式表分配给行编辑

comboBox->lineEdit()->setStyleSheet(your style sheet);

我希望有所帮助。