Форум сайта python.su
Привет форум.
Знакомясь с Qt столкнулся с тем, что не все виджеты доступны из Qt designer'a, пример - интересующий меня QGLWidget. Хочется, чтобы его размер, положение итп. настраивались из GUI-модуля созданного pyuic'ом, а остальное, что внутри него, из главного модуля.
Правильно ли будет использовать возможность предоставляемую цепочкой designer > .ui > pyuic > class для выноса гуи в отдельный модуль. Ведь тогда, КМК, можно будет перекраивать интерфейс не лазя в код, вот только как быть с неизвестными дизайнеру виджетами и почему в примерах от трольтек, гуй всегда создается из кода. Не потому ли, что pyuic генерирует “не совсем правильный” класс? (встречал такое мнение). В общем, делитесь секретами создания уи на Qt, и стратегией отделения его от логики.
Офлайн
А не проще ли создать в дизайнере обычный QWidget с известным названием и просто на нём отрисовать твой QGLWidget?
ZzzoidbergОчень бы хотелось пояснений… Я им уже много лет пользуюсь. Ну да, разочек правил сам алгоритм этого pyuic, но это извращение.
Не потому ли, что pyuic генерирует “не совсем правильный” класс? (встречал такое мнение).
Офлайн
Тоесть QGLWidget'у нужно унаследоваться от собственного QWidget'а переняв его настройки и перехватив сигналы?
“не совсем правильный” в моем сообшении, в статье по PyQt на английском, звучало примерно так - “pyuic generate unpythonic code”. Без пояснений автора не совсем ясно, что имелось ввиду, отсюда и кавычки.
Хм, погуглил чтоб привести пруфинк - нету, но я это не выдумал, гугленье по “PyQt unpythonic” это подтверждает.
Отредактировано (Май 14, 2009 22:53:52)
Офлайн
ZzzoidbergНу зачем же всё так усложнять? Просто отлавливай координаты этого фрейма на экране и на его месте отрисовывай QGLWidget… Ладно, шучу…
Тоесть QGLWidget'у нужно унаследоваться от собственного QWidget'а переняв его настройки и перехватив сигналы?
ZzzoidbergИскренне советую вас “забить и не парится” (с) Пермяки.
Без пояснений автора не совсем ясно, что имелось ввиду, отсюда и кавычки.
Офлайн
О, Promoted widgets - то что надо! Так и сделал: мой класс наследующий QtOpenGL.QGLWidget лежащий на промоутящем его в дизайнере фрейме, который, лежит на растянутом horizontalLayout'е. Спасибо.
Если не затруднит, подскажи еще, как дать дизайнеру знать о сигналах и слотах моего класса. Вот есть у него mousePressEvent, и остальные доставшиеся аж от QWidget методы, с моими обработчиками, и так бы хотелось заиметь возможность перекомутировать их (методы и обработчики) мышью :) из дизайнера. Возможно?
ZZZИскренне надеюсь, что тот, кому адресован совет забить меня, к нему не прислушается :)
Искренне советую вас “забить и не парится” (с) Пермяки.
Офлайн
Так. определимся с понятиями – сигналы и события (эвенты), это совсем разные вещи.
Если тебе нужны события (а тебе нужны события), то переопределяй методы, их представляющие в твоём классе, потомке QGLWidget. Я совершенно не вижу, где может быть проблема.
Если не понял, опиши подробнее, что ты сделал и я тебе помогу. Но уже ночью.
ZzzoidbergХм… Сорри, доктор, очепятался. :-)
Искренне надеюсь, что тот, кому адресован совет забить меня, к нему не прислушается
Офлайн