2013-09-10 4 views
2

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

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

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

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

+0

использовать макет для QDockwidget –

+0

@ratchetfreak Я уже делаю. – Beachwalker

ответ

3

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

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

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

EDIT: В зависимости от однородности ваших деталей, вы можете также извлечь выгоду из установления uniformItemSizes собственности. QListView может оптимизировать макет вашего представления, если вы установите это свойство.

Смежные вопросы