QListWidget изменяет размер содержимого, когда сплиттер меняет размер

У меня есть QListWidget с некоторыми виджетами внутри:

QListWidgetItem* w = new QListWidgetItem(ui->listWidget);
ui->listWidget->addItem(w);
w->setSizeHint(widget->sizeHint());
ui->listWidget->setItemWidget(w, widget);

Тем не менее, кажется, что все работает нормально, пока я не изменю размер QListWidget (он встроен в QDockwidget). Нужно ли перебирать все элементы и изменять их размер вручную или есть простой трюк?

Это просто список с элементами, имеющими кнопку слева и кнопку справа. Если список будет изменен (QSize изменения), чем кнопки скрываются и появляется полоса прокрутки. Я хочу, чтобы размер элемента соответствовал ширине списка.

1 ответ

Решение

Попробуйте установить resizeMode собственность на Adjust, Это приведет к вашему QListWidget автоматически изменить размер всех элементов в представлении до размера QListWidget каждый раз виджет изменяется.

Смотрите документацию здесь. Ваш код будет структурирован так:

QListWidgetItem* w = new QListWidgetItem(ui->listWidget);
w->setSizeHint(widget->sizeHint());
ui->listWidget->setResizeMode(QListView::Adjust);
ui->listWidget->addItem(w);
ui->listWidget->setItemWidget(w, widget);

РЕДАКТИРОВАТЬ: В зависимости от однородности ваших элементов, вы также можете получить выгоду от установки свойства iformItemSizes. QListView Можно оптимизировать макет вашего представления, если вы установите это свойство.

Другие вопросы по тегам