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
Можно оптимизировать макет вашего представления, если вы установите это свойство.