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