Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 19, 2011 08:13:53

Kupuyc
От:
Зарегистрирован: 2011-08-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt. QFormLayout, стили, фон

Приветствую.

Стоит задача разместить на виджете фоновое изображение. Это просто - qss. Ситуация осложняется тем, что у виджета QFormLayout в FieldRole-поле которого размещены кастомные виджеты, наследники QFrame. Изображение нужно выводить именно под FieldRole-полем. Не могу найти способа вычислить позицию с которой оно начинается. Задавать смещение статически - не вариант т.к. ширина LabelRole-поля переменная из-за ширин Qlabel в них.

Простыми словами: нужно разместить фон на области правой колонки QFormLayout.

В какую сторону посоветуете копать?



Офлайн

#2 Сен. 22, 2011 08:22:18

Kupuyc
От:
Зарегистрирован: 2011-08-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt. QFormLayout, стили, фон

В общем, задача решилась примерно так (работающего кода под рукой нет, пишу по памяти):

widget.layout().activate()
widget.layout.itemAt(0, QtGui.QFormLayout.FieldRole).geometry().left()
Ключевым моментом является вызов activate() без которого геометрия неактуальная. Когда это делать - лучше решать отдельно, но, думаю, лучше после всех телодвижений по заполнению layout'а.

Интересно, что очередным подводным камнем оказалось отсутствие полной поддержки background-position - нельзя указать смещение в px. Но это уже мелочи уровня QWidget::paintEvent().



Отредактировано (Сен. 22, 2011 15:00:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version