如何在没有选择的情况下更改QComboBox的第一项样式

问题描述 投票:0回答:1

我有一个 QComboBox,没有预选项目。当我第一次打开它时,第一个项目是浅蓝色的。当我将光标移动到下拉列表上后,悬停的项目变为深蓝色,并且不再有浅蓝色条目。

为什么第一个项目是浅蓝色的,如何使用 QSS 更改其颜色?

ui->cb1->addItems({"1111", "2222"});
ui->cb1->setEditable(true);
ui->cb1->lineEdit()->setPlaceholderText(tr("Please select"));
ui->cb1->setCurrentIndex(-1);
qt qtstylesheets qcombobox
1个回答
0
投票

根据您的需求,可以使用不同的解决方案:

如果您想要完全删除此浅蓝色突出显示,则可以应用于

QComboBox
的 CSS 将
outline
属性(即您所经历的浅蓝色的实际名称)设置为
none

话虽如此,
outline
属性在 Qt 中并不能完美工作,因此需要一些样式来调整下拉列表中的项目:

QComboBox QAbstractItemView {
outline:none;
}

QComboBox QAbstractItemView::item {
border: none;
color:black;
}

QComboBox QAbstractItemView::item:hover {
color:white;
background-color:darkgray;
}

如果您想要的是更改选择背景颜色并具有匹配浅色的轮廓,您可以简单地使用

selection-background-color
/
selection-color
,正如评论中链接的已接受答案中指出的那样(there ):

QComboBox QAbstractItemView {
    selection-background-color: darkgray;
    selection-color: white;
} 

如果你想要的是独立设置一个颜色集(它可以与选择的颜色相同,但我会将其设置为红色以进行说明),你可以这样做:

QComboBox QAbstractItemView::item:focus {
background-color:red;
}

QComboBox QAbstractItemView::item::hover,
QComboBox QAbstractItemView::item::selected {
color:white;
background-color:darkgray;
}
© www.soinside.com 2019 - 2024. All rights reserved.