qtqcomboboxqstandarditemminimum-size

Set minimum row-height of QComboBox


I am trying to set the minimum height of the rows in the QComboBox dropdown menu without changing their width or the size of the QComboBox itself.

By default the width and height of the row items are calculated by its data. To make the dropdown list resize to the width of the data I am calling

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

in the combobox's ::showPopup().

However, since I have different font sizes in rows, I would like to enforce a minimum height on each row.

I tried to use setSizeHint on each QStandardItem that is added in the first column to the rows but without success. I tried:

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

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

But this lead to the dropdown menu not resizing to the data's width.

So, I tried to leave the width "unset". However, both

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

and

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

did not work. Does anyone have an idea how I can enforce a minimum height on the rows of the QComboBox without messing up the automatic width calculation?


Solution

  • Just use this lines:

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

    Or write this code in qss file:

    QListView::item {
        height: 30px;
    }
    

    After that use:

    QComboBox::setView(QAbstractItemView *itemView)