Настройка формы:
QSplitter
(выделено на изображении), который содержит QTreeWidget
(слева) и QTableWidget
(справа):
Нестандартные свойства этих двух виджетов в QSplitter:
QTreeWidget
минимальный размер/ширина = 150
QTableWidget
минимальный размер/ширина = 300
sizePolicy/горизонтальное растяжение = 1
По сути, приведенная выше установка определяет минимальную ширину этих двух компонентов, и именно QTableWidget
будет изменять свою ширину при изменении размера формы.
Кнопки с правой стороны размещены в QVBoxLayout
, а его размер фиксирован.
Вопрос:
При изменении размера формы ширина QTreeWidget
увеличивается от минимума 150 до неизвестных 256, и только затем QTableWidget
начинает расти, в то время как я ожидаю, что QTreeWidget
вообще не увеличится в ширину, так как QTableWidget
- это тот, у которого Horizontal Stretch установлен на 1.
Обратите внимание, это не имеет ничего общего с QSplitter
, так как то же самое происходит, когда я вместо этого помещаю эти два виджета в QHBoxLayout
.
ОБНОВЛЕНИЕ:
Установка QTreeWidget
maxSize/Width на 150 (такая же, как и MinimumSize/Width), чтобы избежать изменения размера этого виджета, дает следующее:
QTreeWidget
теперь исправлено на 150, но при изменении размера окна между двумя виджетами остается пустой промежуток. Этот разрыв увеличивается до 256-150=106, а затем QTableWidget
начинает увеличиваться.
В основном результат аналогичен, но этот временной интервал, который был занят QTreeWidget
, теперь отведен этому пустому интервалу.
Я начал чувствовать, что это может быть ошибка Qt.
Техническая информация:
- Ubuntu 10.04 (Ясная Рысь) x86_64
- ССЗ 4.4.3
- Qt 4.6.2
QSizePolicy::Policy
для этих виджетов? Что произойдет, если вы установитеQSizePolicy::Expanding
вместоQTableWidget
? - person Lol4t0   schedule 17.12.2011QSizePolicy
используется по умолчанию для обоих виджетов, которые расширяются. Даже если я установлю для параметра "Горизонтальная политика"QTreeWidget
значение "Минимум", результат будет тот же. - person Andrejs Cainikovs   schedule 18.12.2011QSizePolicy::Maximum
вместоQTreeWidget
. ИQSizePolicy::Expanding
дляQTableWidget
Минимум на самом деле не означает, что виджет должен иметь минимальный размер, прочитайте этот документ: developer.qt.nokia.com/doc/qt-4.8/qsizepolicy.html - person Lol4t0   schedule 19.12.2011QTreeWidget
наMaximum
дает тот же результат. - person Andrejs Cainikovs   schedule 19.12.2011