Как изменить поведение элемента QListWidget
, чтобы он изменял свою высоту вместо того, чтобы выбирать (на первый взгляд произвольную) высоту и добавлять полосы прокрутки? Смотрите скриншот:
QListView
должны занимать как можно больше места по горизонтали (создавая как можно больше «столбцов», если хотите). Затем они оборачивают и создают столько рядов, сколько необходимо, чтобы поместить все элементы. Эти расчеты следует корректировать по мере изменения размера окна. Это все работает нормально.
Однако я хочу, чтобы вместо того, чтобы высота оставалась неизменной, QListView
должен увеличиваться или уменьшаться по вертикали и никогда не нуждаться в полосах прокрутки. Прокрутка, при необходимости, будет выполняться на родительском элементе QWidget
, в котором размещены все метки и списки. Похоже, что после того, как высота QListWidget
установлена (не знаю, откуда берется ее значение по умолчанию), она никогда не меняется. В некоторых случаях он слишком велик (см. второй список «Тест» выше) и слишком мал в других (см. выше первый список «пустых карт»).
В схеме выше нет ничего удивительного: две QLabel
и две QListWidget
в QVBoxLayout.
Вот свойства, которые я установил для QListWidget
:
setMovement(QListView::Static);
setResizeMode(QListView::Adjust);
setViewMode(QListView::IconMode);
setIconSize(QSize(128, 128));
(Я уже пытался установить политики горизонтальной и вертикальной полосы прокрутки, но это просто отключает полосы прокрутки, обрезая содержимое. Не то, что я хочу.)