我正试图在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;
}
但它无法解决问题。
答案 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;
}