【问题标题】:Qt:Unable to set Background color for qComboBox properlyQt:无法正确设置 qComboBox 的背景颜色
【发布时间】:2018-08-08 09:11:59
【问题描述】:

我有一个 QCombobox,我想设置白色背景色。这是我的代码。

QComboBox *cBox = new QComboBox;
cBox->addItem("Text1");
cBox->setStyleSheet("background-color:white");

这个组合框有一个父部件,其背景是一张图片,设置如下:

ui->centralWidget->setStyleSheet("border-image:url(./image.png)"); 

当我将父 Widget[centralWidget] 背景设置为其他颜色时,白色 BG 对组合框正常工作。但是当我将图像设置为父 Widget 背景时,UI 看起来像这样。

在上面的图片中,黑色 Bg 是图像。有人可以突出显示我缺少什么。任何帮助都会非常有帮助。

【问题讨论】:

  • 您是否在代码的另一部分设置了样式表?如果有,请出示。
  • 不..我只在这里设置样式表..
  • 那么您是如何确定您的小部件具有黑色背景的?
  • 该组合框所在布局的父窗口小部件背景颜色为黑色
  • 平台是什么?你是如何设置背景颜色的?

标签: qt qcombobox qt5.9


【解决方案1】:

当您没有指明要将某些属性应用于哪个小部件时,它们将应用于您的所有子级,因此相同的QComboBox 背景图像将应用于centralWidget 的子级。

在您的情况下,您只想应用到 centralWidget,并且默认情况下 Qt Designer 使用相同的名称作为代表小部件的变量名称和 objectName。

所以如果你想申请一个小部件,我们可以使用 objectName 作为selector

QWidget#centralWidget{ border-image:url(./image.png)}

【讨论】:

  • 你能告诉我 setBackground?stylesheets 还是 QPalette 哪个更好?有什么区别?
  • @adi 你能把它标记为正确吗?我的意思是,问题的作者是唯一可以做到的人,如果您不知道该怎么做,请查看tour
  • 哎呀我不知道..你能告诉我哪个是 setBackground?stylesheets 或 QPalette 的更好方法吗??
  • @adi 有什么区别?,有2种方法,各有优势,例如qss很相似css(准确地说是 css2.1),因此您可以创建一个 .qss 文件,在其中使用选择器等放置所有样式。或者另一方面使用 QPallete,这不仅是唯一的方法,您还可以使用 QStyle。
  • 但是,不管我们采取什么方法设置背景,都是默认继承的吗?
猜你喜欢
  • 2021-08-09
  • 1970-01-01
  • 2019-06-07
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 2014-03-29
相关资源
最近更新 更多