Заставить QListWidget изменить размеры своих элементов, чтобы заполнить пространство - PullRequest
3 голосов
/ 16 октября 2011

У меня есть QListWidget, и у меня есть собственный класс виджета, для которого я создаю экземпляр для каждого элемента, появляющегося в виджете списка.

Но я не могу понять, какчтобы сделать мой пользовательский виджет развернутым, чтобы заполнить все доступное пространство каждой строки в виджете списка.

Мой пользовательский виджет создан в Qt Designer, и я установил подсказку его размера, чтобы он расширялся по горизонтали, но этоне делает этого, когда помещается в мой виджет списка (т.е. в дизайнере, виджет установлен, скажем, шириной 200 пикселей. Виджет списка на самом деле имеет ширину 400 пикселей, но мой пользовательский виджет в каждой строке не расширяется, чтобы заполнить это пространство...)

Как мне сделать эту работу?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Я предполагаю, что вы помещаете сюда элементы, используя QListWidget :: setItemWidget ()?

Если это так, то вам обычно нужно установить sizeHint () вашего QListWidgetItem на значение вашего пользовательского виджета:

myListWidget->setItemWidget( myListWidgetItem, customWidget );
myListWidgetItem->setSizeHint( customWidget->sizeHint() );
0 голосов
/ 12 апреля 2015

Как обновление, начиная с Qt 5.2. Вы можете установить QListWidget 's sizeAdjustPolicy:

listWidget-setSizeAdjustPolicy(QListWidget::AdjustToContents);

Это будет изменять размер QListWidget каждый раз, когда к нему добавляется новый элемент (ширина которого превышает текущую ширину).

Ссылка: http://doc.qt.io/qt-5/qabstractscrollarea.html#sizeAdjustPolicy-prop

...