1

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

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

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

在组合框的::showPopup().

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

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

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

https://stackoverflow.com/a/10749345/1981832

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

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

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

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

不工作。有谁知道如何在QComboBox不弄乱自动宽度计算的情况下在行上强制执行最小高度?

4

1 回答 1

1

只需使用以下行:

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)
于 2020-07-31T08:45:37.430 回答