Найти - Пользователи
Полная версия: PyQt, QtOpenGL.QGLWidget, вынесение гуя
Начало » GUI » PyQt, QtOpenGL.QGLWidget, вынесение гуя
1
Zzzoidberg
Привет форум.
Знакомясь с Qt столкнулся с тем, что не все виджеты доступны из Qt designer'a, пример - интересующий меня QGLWidget. Хочется, чтобы его размер, положение итп. настраивались из GUI-модуля созданного pyuic'ом, а остальное, что внутри него, из главного модуля.
Правильно ли будет использовать возможность предоставляемую цепочкой designer > .ui > pyuic > class для выноса гуи в отдельный модуль. Ведь тогда, КМК, можно будет перекраивать интерфейс не лазя в код, вот только как быть с неизвестными дизайнеру виджетами и почему в примерах от трольтек, гуй всегда создается из кода. Не потому ли, что pyuic генерирует “не совсем правильный” класс? (встречал такое мнение). В общем, делитесь секретами создания уи на Qt, и стратегией отделения его от логики.
ZZZ
А не проще ли создать в дизайнере обычный QWidget с известным названием и просто на нём отрисовать твой QGLWidget?

Zzzoidberg
Не потому ли, что pyuic генерирует “не совсем правильный” класс? (встречал такое мнение).
Очень бы хотелось пояснений… Я им уже много лет пользуюсь. Ну да, разочек правил сам алгоритм этого pyuic, но это извращение.
Zzzoidberg
Тоесть QGLWidget'у нужно унаследоваться от собственного QWidget'а переняв его настройки и перехватив сигналы?
“не совсем правильный” в моем сообшении, в статье по PyQt на английском, звучало примерно так - “pyuic generate unpythonic code”. Без пояснений автора не совсем ясно, что имелось ввиду, отсюда и кавычки.

Хм, погуглил чтоб привести пруфинк - нету, но я это не выдумал, гугленье по “PyQt unpythonic” это подтверждает.
ZZZ
Zzzoidberg
Тоесть QGLWidget'у нужно унаследоваться от собственного QWidget'а переняв его настройки и перехватив сигналы?
Ну зачем же всё так усложнять? Просто отлавливай координаты этого фрейма на экране и на его месте отрисовывай QGLWidget… Ладно, шучу…
На самом деле достаточно создать лайоут с родителем в виде этого фрейма и в этот лайоут добавить созданный на фрейме QGLWidget. Поэкспериментируйте.

И ещё сейчас вот пришла мысль про то, что можно использовать Promoted widgets. Кстати, это очень хорошая мысль.

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

Zzzoidberg
Без пояснений автора не совсем ясно, что имелось ввиду, отсюда и кавычки.
Искренне советую вас “забить и не парится” (с) Пермяки.
Вот когда возникнут пробоемы с “unpythonic”, вот тогда и подумаем… А так… И на заборах много написано…
Zzzoidberg
О, Promoted widgets - то что надо! Так и сделал: мой класс наследующий QtOpenGL.QGLWidget лежащий на промоутящем его в дизайнере фрейме, который, лежит на растянутом horizontalLayout'е. Спасибо.
Если не затруднит, подскажи еще, как дать дизайнеру знать о сигналах и слотах моего класса. Вот есть у него mousePressEvent, и остальные доставшиеся аж от QWidget методы, с моими обработчиками, и так бы хотелось заиметь возможность перекомутировать их (методы и обработчики) мышью :) из дизайнера. Возможно?

ZZZ
Искренне советую вас “забить и не парится” (с) Пермяки.
Искренне надеюсь, что тот, кому адресован совет забить меня, к нему не прислушается :)
ZZZ
Так. определимся с понятиями – сигналы и события (эвенты), это совсем разные вещи.
Если тебе нужны события (а тебе нужны события), то переопределяй методы, их представляющие в твоём классе, потомке QGLWidget. Я совершенно не вижу, где может быть проблема.
Если не понял, опиши подробнее, что ты сделал и я тебе помогу. Но уже ночью.

Zzzoidberg
Искренне надеюсь, что тот, кому адресован совет забить меня, к нему не прислушается
Хм… Сорри, доктор, очепятался. :-)

P.S. Спокойной ночи… Да чтоб я уснул!
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