1

我们正在开发一个 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);
}

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

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

设置 background-image 标签没有效果 - 只有边框图像显示图像。

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

有什么方法可以只为组合框的输入部分设置样式吗?似乎组合的那部分应该有自己的子选择器,但我还没有看到它。

4

1 回答 1

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;
}

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

样式表有一些奇怪的东西——还有很多隐藏的技巧。可能值得花几分钟时间来完成,它描述了样式表工作原理背后的基本原则。它们看起来很简单,但即使在使用了一段时间之后,我也经常回到示例和文档中。

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

尝试使用 background-image 属性很常见,但这有很多缺点:例如,背景通常会隐藏在按钮装饰后面,因为它不被视为背景。此外,如果调整按钮的大小,整个背景将被拉伸或平铺,这并不总是很好看。最好使用border-image 属性,因为无论背景如何,它都会始终显示图像(如果其中包含alpha 值,您可以将其与背景结合起来),并且它具有处理按钮大小调整的特殊设置.

至于输入区域的样式...假设您的 QComboBox 是可编辑的,那么输入区域只是一个 QLineEdit。因此,您始终可以通过这种方式将样式表分配给行编辑

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

我希望这会有所帮助。

于 2011-11-08T02:08:53.703 回答