PyQt4: скрыть виджет и изменить размер окна

Я работаю с несколькими виджетами, но решение просто не выходит. У меня есть ряд кнопок в ряду QHBoxLayouts. Некоторые кнопки по умолчанию скрыты, но при необходимости они появляются. Чтобы решить проблемы с пространством, все кнопки имеют минимальный и максимальный размер, поэтому они всегда выглядят хорошо упакованными. Также у меня есть QTextEdit, видимый по умолчанию, который находится в QVBoxLayout с QHBoxLayout, удерживающими кнопки.

Итак, проблема в следующем: когда я скрываю QTextEdit и показываю другие кнопки, размер окна не изменяется. После поиска я обнаружил, что использование self.ui.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize) поможет, но проблема в том, что он берет максимальный размер от всех виджетов, поэтому я заканчиваю огромным окном. Выполнение self.ui.layout().setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize) не изменит размер окна

Я уже пробовал использовать self.ui.resize(0,0), но при выполнении self.ui.layout().update() получил False (что мне кажется странным, http://doc.trolltech.com/4.6/qlayout.html#activate), а также попытался переопределить sizeHint(), но продолжает использовать максимальный размер для всех виджетов.

Есть ли способ изменить размер окна и при этом позаботиться о минимальном и максимальном размере виджета?

заранее спасибо


person Eligio Becerra    schedule 19.02.2010    source источник
comment
Не могли бы вы опубликовать код или хотя бы фрагмент? Я думаю, было бы легче понять и попытаться диагностировать эту проблему, если бы я мог увидеть ее в действии.   -  person swanson    schedule 19.02.2010
comment
Поскольку я использую модуль uic, а исходный код имеет много зависимостей, я публикую соответствующий код окна pastebin. com/f1544ffdb (что очень мало) и файл uic pastebin.com/f65684099 . Также несколько скриншотов flickr.com/photos/21252852@N06/sets/72157623339593841< /а>   -  person Eligio Becerra    schedule 19.02.2010


Ответы (1)


Ответ был довольно хромым... Просто нужно было заменить QVBoxLayout на QGridLayout и использовать self.ui.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize)

person Eligio Becerra    schedule 19.02.2010
comment
Вы можете принять свой ответ, чтобы ваш вопрос не отображался в списке вопросов без ответов. - person Denilson Sá Maia; 20.07.2010