QComboBox 或 QListWidget 中所选元素的样式文本?
Style text of selected element in QComboBox or QListWidget?
是否可以使用样式表更改所选项目(例如 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 相同)。
我找到的唯一方法是连接到此 SIGNAL http://doc.qt.io/archives/qt-4.8/qlistwidget.html#currentItemChanged
:
currentItemChanged(QListWidgetItem*,QListWidgetItem*)
然后,在SLOT中,在运行时切换字体:
_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);
}
是否可以使用样式表更改所选项目(例如 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 相同)。
我找到的唯一方法是连接到此 SIGNAL http://doc.qt.io/archives/qt-4.8/qlistwidget.html#currentItemChanged :
currentItemChanged(QListWidgetItem*,QListWidgetItem*)
然后,在SLOT中,在运行时切换字体:
_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);
}