QComboBox 文本颜色不会随样式表而改变

Posted

技术标签:

【中文标题】QComboBox 文本颜色不会随样式表而改变【英文标题】:QComboBox text colour won't change with style sheet 【发布时间】:2014-08-18 07:05:15 【问题描述】:

我正在尝试在 QT5 中设置组合框的样式。我正在使用 QT Creator 进行布局并在启动时加载应用程序范围的样式表。

我的组合框相关的css如下:

QComboBox

    color:white;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));
    border-color: rgba(255,255,255,200);
    border-width: 1px;
    border-style: solid;


QComboBox QListView

    border-style: none;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:0, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));


QComboBox::drop-down

    width: 20px;
    border: 1px;
    border-color:white;
    border-left-style:solid;
    border-top-style: none;
    border-bottom-style: none;
    border-right-style: none;


QComboBox::down-arrow

    image: url(:/ArrowImages/images/whitearrowdown16.png);
    width: 16px;
    height: 16px;

但组合框中的文本颜色仍为默认(黑色)颜色。下拉菜单中的颜色是白色。边框颜色和样式都可以正常工作。组合框上的标签是我需要单独设置样式的某种子控件吗?还是我错过了什么?

谢谢。

编辑:

为清晰起见添加了屏幕截图

编辑 2: 看起来这只发生在组合框设置为不可编辑时(这是我的程序的正确行为,所以并没有真正帮助我。)当组合框设置为可编辑时,它正确地遵循样式。我试过添加

QCombobox:!editable

    color:white;

但这并不能解决问题。

【问题讨论】:

如果你从一个文件中加载样式表,也许你在你的应用程序中加载了另一个样式表,它覆盖了那个特定的样式?您可以尝试使用QComboBox#YOUR_SPECIFIC_COMBO_BOX_NAME color: white; 【参考方案1】:

使用填充作为解决方法可能会带来一些其他问题。也许设置 selection-color 应该可以解决这个问题。

QComboBox

   selection-color: white;

【讨论】:

【参考方案2】:

刚刚解决了这个问题。似乎在样式表中的组合框上设置填充属性(具有任何值)使其正确地遵循颜色样式。我假设它归结为仅在某些设置上可能出现的某种错误,但如果其他人遇到同样的问题,以下代码将起作用(与原始问题中的代码相比):

QComboBox

    color:white;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));
    border-color: rgba(255,255,255,200);
    border-width: 1px;
    border-style: solid;
    padding: 1px 0px 1px 3px; /*This makes text colour work*/

【讨论】:

这个问题在过去的两个小时里一直困扰着我......填充?哇,谢谢你解决这个问题!但我想知道为什么?什么样的错误会导致这种情况? 太棒了。很好地解决了这个问题。我遇到了同样的问题。 我知道不鼓励无意义的 cmets 但是...谢谢! margin: 0px 似乎也有效。【参考方案3】:

“内部”视图是一个 QListView。

QListView

  color: white;

应该可以解决问题。

【讨论】:

抱歉,这是实际的组合框本身 - 而不是下拉菜单 - 它不接受颜色的更改。下拉样式正确(尽管使用 QComboBox 部分的颜色,而不是它自己的颜色。但是在我的情况下,这不是问题。) 您是指当前项目吗?对于当前项目,您的代码(第一部分)非常好(QComboBox color: white; )。您是否尝试过删除除颜色标签之外的所有样式表代码? 为了清楚起见,我在原始问题中添加了一些屏幕截图。我尝试创建一个完全空白的样式表,其中只有带有颜色的组合框样式表,但它仍然只影响下拉菜单。

以上是关于QComboBox 文本颜色不会随样式表而改变的主要内容,如果未能解决你的问题,请参考以下文章

如何对 QComboBox 中的文本执行字母间距?

当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变

样式表可以更改 QPlainTextEdit 中的文本颜色吗?

Qt 5.8 QTextEdit 文本光标颜色不会改变

material-ui 按钮颜色不会通过 css 样式改变

如何改变ClickableSpan中下划线的颜色和样式