【问题标题】:Set font using stylesheet for QComboBox with QStandardItemModel使用带有 QStandardItemModel 的 QComboBox 的样式表设置字体
【发布时间】:2017-02-16 01:32:33
【问题描述】:

我有 QComboBox 和一个设置 QComboBox 字体大小的样式表。以前我使用“addItem”将项目添加到 QComboBox,但由于性能问题,我正在为我的 QComboBox 使用模型视图模型

QStandardItem modelItem = new QStandardItem;
modelItem->setText("TEST");
QStandardItemModel model = new QStandardItemModel;
model->appendRow(modelItem);
QListView listView = new QListView;

comboBox->setView(listView);
comboBox->setModel(model);

这大概是我的代码的样子。当我单击组合框时,如何使用样式表来增加列表中的字体大小?我以前的样式表可以正常工作,直到我将代码设计为使用 QStandardItemModel 和 QListView。

【问题讨论】:

  • 只需附加这一行:comboBox->setStyleSheet("QListView { font: 20pt; }");

标签: c++ qt qcombobox qlistview


【解决方案1】:

自定义您自己的QStandardItem 并使您的模型返回Qt::FontRole 所需的字体:

QVariant MyCustomModel::data(const QModelIndex &index, int role) const {
     if (role == Qt::FontRole) {
         // Custom your font
         QFont font;
         font.setBold(true);
         return font;
     } else if (role == Qt::ForegroundRole) {
         return QColor(Qt::red); // QBrush color
     } else {
         [..]
     }
}

【讨论】:

  • modelItem->setData(myFont, Qt::FontRole) 在这种情况下就足够了。
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 2020-08-02
  • 2011-02-13
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多