【问题标题】:Style text of selected element in QComboBox or QListWidget?QComboBox 或 QListWidget 中选定元素的样式文本?
【发布时间】:2018-10-19 16:07:21
【问题描述】:

是否可以使用样式表来更改所选项目(如 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 相同)。

【问题讨论】:

  • 你试过了吗QListWidget:item:selected:active ?
  • 试过了,谢谢,但还是不行。

标签: c++ qt stylesheet qlistwidget


【解决方案1】:

我找到的唯一方法是连接到这个信号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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2014-04-16
    • 2019-07-03
    相关资源
    最近更新 更多