У меня есть приложение PySide, которое я пытаюсь сделать совместимым с PyQt4. Очевидно, это не должно быть слишком сложно, но я хотел бы свести к минимуму количество необходимых изменений кода. Самая большая разница, с которой я столкнулся (которая влияет на мою программу), заключается в том, что PyQt не обертывает класс QUiLoader
.
Теперь я понимаю, что я все еще могу загружать файлы пользовательского интерфейса с модулем uic в PyQt, однако в настоящее время я использую подкласс QUiLoader
в PySide, который реализует некоторые пользовательские функции, которые я хотел бы зарезервировать, если это возможно.
Функционал следующий. Я создал подкласс QUiLoader
и переопределил метод createWidget()
. Моя новая реализация позволяет динамически регистрировать продвижение виджета во время выполнения приложения. Я могу это сделать, потому что метод createWidget()
отвечает за создание экземпляров виджетов из ui-файла, после чего (я полагаю) стандартная реализация QUiLoader применяет указанные свойства из ui-файла.
Мой вопрос: есть ли аналогичный метод, который я мог бы переопределить в PyQt для динамической установки продвижения виджета во время выполнения, вместо того, чтобы устанавливать его статически через Qt Designer и файл пользовательского интерфейса.
P.S. Я ищу решение, которое требует минимальных изменений в моем существующем коде. Например, если бы я мог заменить свой подкласс PySide QUiLoader
классом, который обеспечивает эквивалентное поведение в PyQt, это было бы идеально.
EDIT: Реализация будет использоваться примерно так:
loader = UiLoader()
loader.registerCustomPromotion("myWidgetNameInQtDesigner",ClassToPromoteTo)
ui = loader.load('myUiFile.ui')
Фактически это то, что я сделал с моим подклассом QUiLoader
в PySide. Любой виджет в файле .ui с именем "myWidgetNameInQtDesigner"
будет создан как экземпляр ClassToPromoteTo
.
QUiLoader
в PySide, который допускает динамическое продвижение. Я, вероятно, должен был быть чист, что он позволяет динамически продвигать любой виджет в вашем файле пользовательского интерфейса в ваш собственный подкласс этого виджета. Код PyQt, с которым вы меня связали, позволяет это только для виджета верхнего уровня без родителя (насколько я вижу). - person three_pineapples   schedule 10.01.2014