Russian Qt Forum
Июля 04, 2025, 18:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: размеры виджета с Layout  (Прочитано 3717 раз)
spirits25
Гость
« : Января 26, 2012, 12:39 »

Всем привет.

Есть виджет, наследуемый от QWidget, который находится в QScrollArea.
У этого виджета есть QGridLayout. В неё помещается неизвестное количество разных виджетов
Среди этих виджетов есть те, которые надо прятать и показывать по нажатию кнопки.
Вопрос: как сделать, чтобы мой виджет с Layout'ом не сжимал внутренние виджеты при появлении скрытых? или чтобы от не оставлял кучу свободного места после скрытии некоторых внутренних?

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

Спасибо.
« Последнее редактирование: Января 26, 2012, 12:47 от spirits25 » Записан
interv
Гость
« Ответ #1 : Января 26, 2012, 13:57 »

Поставь VerticalSpicer в дизайнере под виджет, он его подожмет наверх. У виджета свойство sizePolicy вертикальное поменяй. Также виджеты которые ты помещаеш тоже sizePolicy устанавливай...
« Последнее редактирование: Января 26, 2012, 14:00 от interv » Записан
spirits25
Гость
« Ответ #2 : Января 26, 2012, 14:23 »

Цитировать
Поставь VerticalSpicer в дизайнере под виджет, он его подожмет наверх.
Как это строчкой кода сделать?
Записан
spirits25
Гость
« Ответ #3 : Января 26, 2012, 14:34 »

сделал так
Код:
        self.gridLayout.addItem(QtGui.QSpacerItem( 10, 200, \
                QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Maximum ), x, y, 1, 2)
Уже лучше, но виджеты немного немного сдвигаются. Что с этим можно сделать?

Или может есть другой способ сделать аля расширенные настройки?
То есть нажимаешь на определённый виджет, открываются дополнительные виджеты, нажимаешь ещё раз - они убираются.
« Последнее редактирование: Января 26, 2012, 14:37 от spirits25 » Записан
spirits25
Гость
« Ответ #4 : Января 26, 2012, 14:54 »

Всё, спасибо за подсказку.
Вот это:
Код:
QtGui.QSpacerItem( 0, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding )
Решило проблему=)
Первые числа любые, но лучше меньше=)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.026 секунд. Запросов: 18.