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

Sam*_*Sam 9 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;
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

编辑:

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

Combobox风格

下拉风格

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

QCombobox:!editable
{
    color:white;
}
Run Code Online (Sandbox Code Playgroud)

但它并没有解决问题.

Sam*_*Sam 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*/
}
Run Code Online (Sandbox Code Playgroud)

  • 惊人.很好的解决这个问题.我有同样的问题. (3认同)
  • 这个问题在过去的两个小时里困扰着我...... PADDING?哇,谢谢你解决这个问题!但我想知道为什么?什么样的错误会导致这种情况? (2认同)