【问题标题】:QComboBox text colour won't change with style sheetQComboBox 文本颜色不会随样式表而改变
【发布时间】: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; }

标签: qt qt5 qtstylesheets


【解决方案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; })。您是否尝试过删除除颜色标签之外的所有样式表代码?
    • 为了清楚起见,我在原始问题中添加了一些屏幕截图。我尝试创建一个完全空白的样式表,其中只有带有颜色的组合框样式表,但它仍然只影响下拉菜单。
    猜你喜欢
    • 2016-08-05
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多