Отрисовка стандартного виджета на буфер |
Здравствуйте, гость ( Вход | Регистрация )
Отрисовка стандартного виджета на буфер |
piton |
29.9.2009, 13:11
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.9.2009 Пользователь №: 1125 Спасибо сказали: 0 раз(а) Репутация: 0 |
Предисловие: есть движок, в котором реализованы мультимедиа объекты (картинки, видео, текст и т.д.) и их управление (загрузка, отрисовка, размещение на окне). Все объекты выводятся на окно в зависимости от их глубины (depth) размещения, т.е. объекты могут друг на друга наезжать и частично или полностью перекрывать друг друга. Все это дело должно работать как под виндой, так и под линуксами. Было принято решение использовать QT в качестве реализации главного окна и обработки мышиных и клавиатурных сообщений.
Сама суть: нужен ввод с клавиатуры в текстовое поле. В качестве эксперимента был взят класс QTextEdit. В принципе в нем все устраивает, за исключением одного момента: это отрисовка в буфер. Снять копию с виджета и поместить ее в тот же QImage не составляет труда, но нельзя запретить виджету рисоваться куда ему захочется. Под виндой это решалось просто, путем сабклассинга и подсовывание своего контекста рисования. В QT я не нашел способа подсунуть свой контекст для отрисовки. QT настырно продолжает рисовать на свой контекст. Пробовал переопределять функции, связанные с рисованием, но в QT они носят чисто информационный характер, т.е. как состоявшийся факт "я отрисовалась и если хочешь, можешь ты еще чего поверх нарисовать". Цель состоит в том, что бы можно было поле для ввода текста использовать от QT и при этом рисовать самому, перемешивая с другими объектами. Вопрос: возможно ли запретить виджету рисоваться куда ему захочется или дать виджету свой контекст для рисования и он сам туда рисовался, при этом не использовал контекст рисования родительского окна (фактически единственного окна)? |
|
|
Litkevich Yuriy |
29.9.2009, 15:46
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Эта функция вызывается когда виджет уже отрисовался нет, только когда он хочет рисоваться.Ещё можешь почитать про технологию "Мужик", как мы её окрестили |
|
|
piton |
29.9.2009, 16:15
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.9.2009 Пользователь №: 1125 Спасибо сказали: 0 раз(а) Репутация: 0 |
Эта функция вызывается когда виджет уже отрисовался нет, только когда он хочет рисоваться.Хорошо.
Может есть возможность во время paintEvent(...) снимать копию изображения с виджета или говорить ему что надо отрисовать на сторонний контекст? Ещё можешь почитать про технологию "Мужик", как мы её окрестили Спасибо за пример. Но немного не по моей теме. . Может и ошибаюсь.... |
|
|
Текстовая версия | Сейчас: 28.4.2024, 1:54 |