在QComboBox或QListWidget中设置所选元素的样式文本?

Style text of selected element in QComboBox or QListWidget?

本文关键字:元素 样式 文本 QComboBox QListWidget 设置      更新时间:2023-10-16

是否可以使用样式表更改所选项目(如QComboBox或QListWidget(中包含的文本的外观? 我尝试过使用 QListWidget,但我可以更改除文本属性之外的所有内容。

此示例更改文本颜色,但不更改其字体:

QListWidget m_pListMain = new QListWidget(this);
m_pListMain->setStyleSheet("QListWidget:item:selected{"
"color: red;"
"font: bold;"
"}");

相反,这可以正常工作:

QListWidget m_pListMain = new QListWidget(this);
m_pListMain->setStyleSheet("QListWidget{"
"color: red;"
"font: bold;"
"}");

但显然它会更改所有项目,而不仅仅是选定的项目。 我错过了什么?(我假设问题与QComboBox相同(。

我找到的唯一方法是连接到这个信号 http://doc.qt.io/archives/qt-4.8/qlistwidget.html#currentItemChanged :

currentItemChanged(QListWidgetItem*,QListWidgetItem*)

然后,在插槽中,在运行时切换字体:

_HandleListItemChanged(QListWidgetItem *p_pItemCurrent, QListWidgetItem *p_pItemPrevious)
{
// Switch fonts: only selected must be bold
QFont l_Font = p_pItemCurrent->font();
l_Font.setBold(true);
p_pItemCurrent->setFont(l_Font);
l_Font = p_pItemPrevious->font();
l_Font.setBold(false);
p_pItemPrevious->setFont(l_Font);
}