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

时间:2014-06-27 08:26:03

标签: qt qt5 qtstylesheets

我正试图在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;
}

但组合框中的文本颜色将重新标记为默认(黑色)颜色。下拉列表中的颜色为白色。边框颜色和样式都正常工作。组合框上的标签是否需要单独设置哪种子控制?或者我错过了其他什么?

感谢。

编辑:

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

Combobox style

Drop down style

编辑2: 看起来这只会在组合框设置为不可编辑时发生(这对我的程序来说是正确的行为,因此对我没有帮助。)当组合框设置为可编辑时,它会正确地服从样式。我试过添加

QCombobox:!editable
{
    color:white;
}

但它无法解决问题。

3 个答案:

答案 0 :(得分:17)

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

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*/
}

答案 1 :(得分:2)

The View" inside"是一个QListView。

QListView
{
  color: white;
}

应该这样做。

答案 2 :(得分:-1)

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

QComboBox
{
   selection-color: white;
}