Найти - Пользователи
Полная версия: PyQt. QFormLayout, стили, фон
Начало » GUI » PyQt. QFormLayout, стили, фон
1
Kupuyc
Приветствую.

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

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

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

Интересно, что очередным подводным камнем оказалось отсутствие полной поддержки background-position - нельзя указать смещение в px. Но это уже мелочи уровня QWidget::paintEvent().
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB