Уведомления

Группа в Telegram: @pythonsu

#1 Май 13, 2009 20:20:09

Zzzoidberg
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

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



Офлайн

#2 Май 14, 2009 01:44:17

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

А не проще ли создать в дизайнере обычный QWidget с известным названием и просто на нём отрисовать твой QGLWidget?

Zzzoidberg
Не потому ли, что pyuic генерирует “не совсем правильный” класс? (встречал такое мнение).
Очень бы хотелось пояснений… Я им уже много лет пользуюсь. Ну да, разочек правил сам алгоритм этого pyuic, но это извращение.



Офлайн

#3 Май 14, 2009 22:15:08

Zzzoidberg
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

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

Хм, погуглил чтоб привести пруфинк - нету, но я это не выдумал, гугленье по “PyQt unpythonic” это подтверждает.



Отредактировано (Май 14, 2009 22:53:52)

Офлайн

#4 Май 15, 2009 00:03:41

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

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

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

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

Zzzoidberg
Без пояснений автора не совсем ясно, что имелось ввиду, отсюда и кавычки.
Искренне советую вас “забить и не парится” (с) Пермяки.
Вот когда возникнут пробоемы с “unpythonic”, вот тогда и подумаем… А так… И на заборах много написано…



Офлайн

#5 Май 15, 2009 09:50:26

Zzzoidberg
От:
Зарегистрирован: 2009-05-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

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

ZZZ
Искренне советую вас “забить и не парится” (с) Пермяки.
Искренне надеюсь, что тот, кому адресован совет забить меня, к нему не прислушается :)



Офлайн

#6 Май 15, 2009 10:20:59

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PyQt, QtOpenGL.QGLWidget, вынесение гуя

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

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

P.S. Спокойной ночи… Да чтоб я уснул!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version