设置 QComboBox 的最小行高

Set minimum row-height of QComboBox

我试图在 QComboBox 下拉菜单中设置行的最小高度,而不更改它们的宽度或 QComboBox 本身的大小。

默认情况下,行项目的宽度和高度由其数据计算。使下拉列表调整到我正在调用的数据的宽度

view()->setMinimumWidth(view()->sizeHintForColumn(0);

在组合框的 ::showPopup() 中。

但是,由于我在行中有不同的字体大小,我想在每一行上强制执行最小高度。

我尝试对添加到行的第一列中的每个 QStandardItem 使用 setSizeHint,但没有成功。我试过了:

item->setSizeHint(QSize(item->sizeHint().width(), minHeight));

()

但这会导致下拉菜单无法根据数据的宽度调整大小。

所以,我试图让宽度“未设置”。然而,

item->setSizeHint(QSize(QSize().width(), minHeight));

item->setSizeHint(QSize(0, minHeight));

没用。有谁知道我如何在不扰乱自动宽度计算的情况下对 QComboBox 的行强制执行最小高度?

只需使用这几行:

QComboBox combo;
QListView *view = new QListView(&combo);
view->setStyleSheet("QListView::item{height: 100px}");
combo.setView(view);

或者在qss文件中写入这段代码:

QListView::item {
    height: 30px;
}

之后使用:

QComboBox::setView(QAbstractItemView *itemView)