LINUX.ORG.RU

PyQt: автоизменение размера вложенного виджета


0

2

Добрый день! Изучаю постепенно PyQt, базовыми функциями (вроде создания разделов и подразделов меню, тулбаров, кнопок) на самом начальном уровне вроде как овладел. Ступор возник при создании виджетов внутри главного окна. Задача такова: создается объект QMainWindow с меню и панелью-статусом внизу экрана (это уже сделано), а все расстояние от строки меню до панели-статуса должно быть занято вертикальным контейнером QVBoxLayout, внутри которого помещаются виджеты QTextEdit и QPushButton. С этим вроде проблем не возникло, но есть одна весьма досадная неприятность: при изменении размера QMainWindow размер QVBoxLayout остается прежним, а мне необходимо изменять этот размер пропорционально. Документация по Qt довольно велика, честно говоря, я в ней попросту заблудился, поскольку не знаю, что именно нужно искать. Пляски вокруг .size вроде ничего не дали. Или я неправильно танцую, или нужен вообще другой танец. Подскажите, пожалуйста, как решить эту проблему? Спасибо.

> Или я неправильно танцую, или нужен вообще другой танец.

Завязывай с танцами и начинай думать.

archimag ★★★ ()
Ответ на: комментарий от archimag

Это - как раз тот случай, когда формированию мозга способствует предварительное обучение танцам. :-)

ghostmansd ()

Насколько я помню, на MainWindow ничего напрямую класть нельзя - нужно назначить centralWidget, а потом уже на него натянуть layout.
В таком случае при ресайзе mainwnd тянет виджет, а виджет - layout.

И, кстати, кнопка и поле ввода по вертикали всё равно не тянутся, зачем это тебе?

schizoid ★★★ ()
Ответ на: комментарий от schizoid

И, кстати, кнопка и поле ввода по вертикали всё равно не тянутся, зачем это тебе?

Если попросить, то тянется

        QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(0);
        sizePolicy.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());
        pushButton->setSizePolicy(sizePolicy);

AF ★★★ ()

>при изменении размера QMainWindow размер QVBoxLayout остается прежним

Со временем он тоже изменится, просто это питон тормозит.

anonymous ()
Ответ на: комментарий от schizoid

Насколько я помню, на MainWindow ничего напрямую класть нельзя - нужно назначить centralWidget, а потом уже на него натянуть layout.

В таком случае при ресайзе mainwnd тянет виджет, а виджет - layout.

Всё правильно сказал.

Pavval ★★★★★ ()
Ответ на: комментарий от schizoid

Ваяют дизайнеры, я только пишу что закажут.

AF ★★★ ()
Ответ на: комментарий от Reset

QtDesigner не требует особого понимания, а я хочу разобраться. А интерфейсы мелкомягким я не пишу, потому как не пользуюсь плодами их творчества.

ghostmansd ()
Ответ на: комментарий от ghostmansd

Нет, гуй надо делать только designer'ом. То что ты делаешь это рукоблудство и рутина, которая к пониманию отношения не имеет.

Reset ★★★★★ ()
Ответ на: комментарий от Reset

>Нет, гуй надо делать только designer'ом.

Не соглашусь. Сложный гуй (напр., если есть динамические элементы или нужны массивы контролов) проще сделать руками

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.