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 文本颜色不会随样式表而改变的主要内容,如果未能解决你的问题,请参考以下文章
当包含 textColor 的样式应用于 textView 的 textAppearance 时,文本的颜色不会改变