Здравствуйте, гость ( Вход | Регистрация )
|
piton |
29.9.2009, 13:11
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.9.2009 Пользователь №: 1125 Спасибо сказали: 0 раз(а) Репутация: 0
|
Предисловие: есть движок, в котором реализованы мультимедиа объекты (картинки, видео, текст и т.д.) и их управление (загрузка, отрисовка, размещение на окне). Все объекты выводятся на окно в зависимости от их глубины (depth) размещения, т.е. объекты могут друг на друга наезжать и частично или полностью перекрывать друг друга. Все это дело должно работать как под виндой, так и под линуксами. Было принято решение использовать QT в качестве реализации главного окна и обработки мышиных и клавиатурных сообщений.
Сама суть: нужен ввод с клавиатуры в текстовое поле. В качестве эксперимента был взят класс QTextEdit. В принципе в нем все устраивает, за исключением одного момента: это отрисовка в буфер. Снять копию с виджета и поместить ее в тот же QImage не составляет труда, но нельзя запретить виджету рисоваться куда ему захочется. Под виндой это решалось просто, путем сабклассинга и подсовывание своего контекста рисования. В QT я не нашел способа подсунуть свой контекст для отрисовки. QT настырно продолжает рисовать на свой контекст. Пробовал переопределять функции, связанные с рисованием, но в QT они носят чисто информационный характер, т.е. как состоявшийся факт "я отрисовалась и если хочешь, можешь ты еще чего поверх нарисовать". Цель состоит в том, что бы можно было поле для ввода текста использовать от QT и при этом рисовать самому, перемешивая с другими объектами. Вопрос: возможно ли запретить виджету рисоваться куда ему захочется или дать виджету свой контекст для рисования и он сам туда рисовался, при этом не использовал контекст рисования родительского окна (фактически единственного окна)? |
|
|
|
![]() |
|
rnd |
29.9.2009, 14:23
Сообщение
#2
|
|
Студент ![]() Группа: Участник Сообщений: 54 Регистрация: 22.7.2009 Пользователь №: 930 Спасибо сказали: 1 раз(а) Репутация: 0
|
наследуйтесь и переопределите QTextEdit::paintEvent - в нем рисуйте что надо
|
|
|
|
|
piton |
29.9.2009, 14:27
Сообщение
#3
|
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 29.9.2009 Пользователь №: 1125 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(rnd @ 29.9.2009, 15:23) Link наследуйтесь и переопределите QTextEdit::paintEvent - в нем рисуйте что надо Пробовал. Эта функция вызывается когда виджет уже отрисовался и оповещает о случившемся факте. А надо что бы он вообще не рисовался или рисовался только на определенный (свой) контекст. Цитата(rnd @ 29.9.2009, 15:23) Link наследуйтесь и переопределите QTextEdit::paintEvent - в нем рисуйте что надо Пробовал. Эта функция вызывается когда виджет уже отрисовался и оповещает о случившемся факте. А надо что бы он вообще не рисовался или рисовался только на определенный (свой) контекст. |
|
|
|
piton Отрисовка стандартного виджета на буфер 29.9.2009, 13:11
ViGOur Цитата(piton @ 29.9.2009, 15:27) Пробовал... 29.9.2009, 15:10
piton Цитата(ViGOur @ 29.9.2009, 16:10) Цитата(... 29.9.2009, 15:42
Litkevich Yuriy Цитата(piton @ 29.9.2009, 18:27) Эта функ... 29.9.2009, 15:46
piton Цитата(Litkevich Yuriy @ 29.9.2009, 16:46... 29.9.2009, 16:15
Litkevich Yuriy Цитата(piton @ 29.9.2009, 20:15) отрисова... 29.9.2009, 16:27
piton Цитата(Litkevich Yuriy @ 29.9.2009, 17:27... 29.9.2009, 16:54
BRE Цитата(piton @ 29.9.2009, 17:54) сторонни... 29.9.2009, 17:05
piton Цитата(BRE @ 29.9.2009, 18:05) Думаю стои... 29.9.2009, 17:16
BRE Цитата(piton @ 29.9.2009, 18:08) Я так и ... 29.9.2009, 17:23
rnd Самое просто в таких случаях - смотреть исходники ... 29.9.2009, 17:33
piton Цитата(rnd @ 29.9.2009, 18:33) Самое прос... 30.9.2009, 13:02
Litkevich Yuriy piton, тут меня одна мыслишка посетила. Значится б... 29.9.2009, 17:59
BRE 2 piton
Перечитал первый пост темы и у меня возни... 29.9.2009, 19:02![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 27.12.2025, 3:33 |