Здравствуйте, гость ( Вход | Регистрация )
|
SABROG |
26.5.2009, 11:52
Сообщение
#1
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Есть желание рисовать на дочерних окошках, причем хочется оставить их оригинальный render и рисовать поверх уже готовой картинки. Ввиду того, что дочерних элементов может быть сколько угодно, я не могу (а скорее не хочу) унаследоваться от каждого из них. Поэтому я использую installEventFilter.
Получился такой код: Но не получается. Если убрать первый QObject::eventFilter(o, e);, то виджет рисуется поверх линии, т.е. она остается на заднем плане. Если оставить, то рисуется вообще только одна линия, оригинального изображения виджета нет. paintEvent вызвать напрямую не могу, т.к. он protected, render() и repaint() приводят к рекурсии, естественно. |
|
|
|
![]() |
|
igor_bogomolov |
27.5.2009, 8:52
Сообщение
#2
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29
|
Цитата(kwisp @ 27.5.2009, 8:23) Link на каждом виджете в отдельности получилось нарисавать, почему бы просто не рассчитать где должна находится линия на каждом виджете чтоб при совмещении получилась одна прямая.. Цитата(igor_bogomolov @ 26.5.2009, 23:09) Link Не подскажешь как координаты привести к единым. Т.е. как провести прямую линию через несколько виджетов, и она при этом не ломалась. Как раз это у меня не получается. Не знаю, как координаты привести. Это единственный выход в нашей ситуации. Если заменить p.setViewport(rect()) на p.setWindow(qobject_cast<QWidget*>(obj)->geometry()), линии практически совпадают. Тут проблемы возникают с методом geometry, возвращает неправильные координаты и размеры. |
|
|
|
SABROG QPaintEvent, installEventFilter, QPainter, Overpainting 26.5.2009, 11:52
kwisp Цитата(SABROG @ 26.5.2009, 12:52) оригина... 26.5.2009, 12:01
Litkevich Yuriy SABROG, первая мысля в слух: Стало быть фильтр выз... 26.5.2009, 12:14
SABROG Цитата(kwisp @ 26.5.2009, 13:01) поясни п... 26.5.2009, 12:15
Litkevich Yuriy Цитата(SABROG @ 26.5.2009, 16:15) Думаю p... 26.5.2009, 12:19
SABROG Через флаг не получилось. Второй paintEvent затира... 26.5.2009, 12:31
kwisp Цитата(SABROG @ 26.5.2009, 13:31) Второй ... 26.5.2009, 12:39
SABROG Цитата(kwisp @ 26.5.2009, 13:39) вообще к... 26.5.2009, 12:51
kwisp Цитата(SABROG @ 26.5.2009, 13:31) В момен... 26.5.2009, 12:53
SABROG Цитата(kwisp @ 26.5.2009, 13:53) Цитата(S... 26.5.2009, 12:56
Litkevich Yuriy Цитата(SABROG @ 26.5.2009, 16:56) В друго... 26.5.2009, 13:11
SABROG Цитата(Litkevich Yuriy @ 26.5.2009, 14:11... 26.5.2009, 13:23
Litkevich Yuriy SABROG, для случая не окна, глянь-ка сюда
и ещё
... 26.5.2009, 16:00
SABROG До этих мест я добрался уже давно, но никак не мог... 26.5.2009, 16:24
kwisp Цитата(Litkevich Yuriy @ 26.5.2009, 17:00... 26.5.2009, 16:24
SABROG Похоже получается.
Как я понял sendEvent вызыва... 26.5.2009, 16:35
Litkevich Yuriy Цитата(SABROG @ 26.5.2009, 20:35) Похоже ... 26.5.2009, 16:42
SABROG Цитата(Litkevich Yuriy @ 26.5.2009, 17:42... 26.5.2009, 16:46
Litkevich Yuriy а можешь тестовый примерчик вылочить, с минимумом ... 26.5.2009, 16:48
SABROG Цитата(Litkevich Yuriy @ 26.5.2009, 17:48... 26.5.2009, 16:50
SABROG Накатал простенький пример. Правда не самый удачны... 26.5.2009, 18:25
SABROG Господа, поздравьте меня. Наконец-то я это сделал: 26.5.2009, 19:22
DmP SABROG, сорри за офтоп, но чем делаются такие карт... 26.5.2009, 19:47
SABROG Цитата(DmP @ 26.5.2009, 20:47) SABROG, со... 26.5.2009, 20:34
igor_bogomolov Может я что то делаю не так, но нарисовать что то ... 26.5.2009, 22:09
SABROG Я об этом думал и хотел попробовать завтра такую ш... 26.5.2009, 22:28
igor_bogomolov Цитата(SABROG @ 26.5.2009, 23:28) - после... 26.5.2009, 22:40
kwisp igor_bogomolov,
на каждом виджете в отдельности п... 27.5.2009, 7:23
SABROG Цитата(igor_bogomolov @ 26.5.2009, 23:40)... 27.5.2009, 8:51
kwisp Цитата(igor_bogomolov @ 27.5.2009, 9:52) ... 27.5.2009, 9:01
igor_bogomolov Цитата(SABROG @ 27.5.2009, 9:51) если уст... 27.5.2009, 9:32
kwisp igor_bogomolov,
готово
проблема в viewport() он в... 27.5.2009, 10:20
igor_bogomolov kwisp, все правильно. Сам только что до этого доду... 27.5.2009, 10:32
Kagami Можно подумать в эту сторону
Раскрывающийся текстЦ... 27.5.2009, 10:47
igor_bogomolov Цитата(Kagami @ 27.5.2009, 11:47) Можно п... 27.5.2009, 11:06
igor_bogomolov RE: QPaintEvent, installEventFilter, QPainter, Overpainting 27.5.2009, 11:54
SABROG В общем затык на отрисовке чайлдов. Как я понял сх... 27.5.2009, 12:30
igor_bogomolov Цитата(SABROG @ 27.5.2009, 13:30) В общем... 27.5.2009, 12:59
SABROG Цитата(igor_bogomolov @ 27.5.2009, 13:59)... 27.5.2009, 13:19
igor_bogomolov У меня на сегодня уже перенагрузка мозга пошла. Во... 27.5.2009, 13:50
SABROG Виджет. 27.5.2009, 14:05
Litkevich Yuriy Цитата(SABROG @ 26.5.2009, 23:22) Господа... 27.5.2009, 14:41
SABROG Цитата(Litkevich Yuriy @ 27.5.2009, 15:41... 27.5.2009, 14:56
igor_bogomolov Тебя смущает двойной вызов обработчика события рис... 27.5.2009, 15:00
SABROG Цитата(igor_bogomolov @ 27.5.2009, 16:00)... 27.5.2009, 15:12
Litkevich Yuriy SABROG, я к тому, что вроде была для этого отдельн... 27.5.2009, 15:28
igor_bogomolov Я думаю, другого способа мы не найдем. Дело в том,... 27.5.2009, 16:33
Litkevich Yuriy а что если после собственного рисования, запрещать... 27.5.2009, 17:01
SABROG Цитата(Litkevich Yuriy @ 27.5.2009, 18:01... 27.5.2009, 17:32
Litkevich Yuriy а есть ещё такая штука как двойная буферизация, её... 27.5.2009, 17:49
SABROG Цитата(Litkevich Yuriy @ 27.5.2009, 18:49... 27.5.2009, 17:58
igor_bogomolov Цитата(Litkevich Yuriy @ 27.5.2009, 18:49... 27.5.2009, 17:57
igor_bogomolov SABROG, да объясни же, чем не устраивает полученно... 27.5.2009, 18:02
SABROG Цитата(igor_bogomolov @ 27.5.2009, 19:02)... 27.5.2009, 18:11
igor_bogomolov Цитата(SABROG @ 27.5.2009, 19:11) на скри... 27.5.2009, 18:24
SABROG Много чего придумать можно. Тот же эффект падающег... 27.5.2009, 19:48
igor_bogomolov Цитата(SABROG @ 27.5.2009, 15:56) это аль... 27.5.2009, 21:05
SABROG Ладно, чтобы завершить тему, можешь выложить приме... 27.5.2009, 21:12
igor_bogomolov Цитата(SABROG @ 27.5.2009, 22:12) Ладно, ... 27.5.2009, 21:40
SABROG Меня не столько исходники интересуют, сколько скри... 27.5.2009, 22:05
igor_bogomolov Цитата(SABROG @ 27.5.2009, 23:05) Меня не... 28.5.2009, 1:17
Litkevich Yuriy Вот для эфекта затемнения я бы просто палитру окош... 28.5.2009, 4:18
SABROG Цитата(Litkevich Yuriy @ 28.5.2009, 5:18)... 28.5.2009, 8:23
igor_bogomolov Цитата(SABROG @ 28.5.2009, 9:23) Осталось... 28.5.2009, 8:40
Litkevich Yuriy Цитата(igor_bogomolov @ 28.5.2009, 12:40)... 28.5.2009, 8:58
igor_bogomolov Все поправил. Теперь и анимация работает нормально... 28.5.2009, 11:02
SABROG Написал в wiki как смог, если есть желающие добави... 28.5.2009, 11:20
SABROG wasyota мне дал любопытную ссылочку http://www.qtc... 28.5.2009, 12:52
igor_bogomolov Цитата(SABROG @ 28.5.2009, 13:52) wasyota... 28.5.2009, 13:04
SABROG #ifndef __POSTEVENTFILTER_H
#define __POSTEVENTFIL... 28.5.2009, 13:08
igor_bogomolov Цитата(SABROG @ 28.5.2009, 12:20) Написал... 28.5.2009, 13:29
Litkevich Yuriy SABROG, а что если теперь запустить ссылкой в qt-a... 28.5.2009, 13:51
SABROG Цитата(Litkevich Yuriy @ 28.5.2009, 14:51... 28.5.2009, 13:57
Litkevich Yuriy ну на qt-apps, кто-то утверждал, что задачка не дл... 28.5.2009, 14:21
igor_bogomolov How to sendEvent QPaintEvent ? 28.5.2009, 14:24
SABROG Цитата(igor_bogomolov @ 28.5.2009, 15:24)... 28.5.2009, 14:38
Litkevich Yuriy Ах, да qtcentre.org, конечно, а не qt-apps 28.5.2009, 14:39
SABROG Вопрос. А ведь QRubberBand тоже рисуется поверх ви... 28.5.2009, 16:44
igor_bogomolov Цитата(SABROG @ 28.5.2009, 17:44) Хуже он... 28.5.2009, 18:17
Litkevich Yuriy igor_bogomolov, Прикольно получилось 28.5.2009, 19:19
ViGOur Цитата(igor_bogomolov @ 28.5.2009, 19:17)... 28.5.2009, 20:06
Kagami igor_bogomolov, выложи, пожалуйста, исходники с му... 28.5.2009, 20:55
igor_bogomolov Цитата(Kagami)igor_bogomolov, выложи, пожалуйста, ... 28.5.2009, 21:15
ViGOur igor_bogomolov, выложил твоего мужика на сайт: htt... 29.5.2009, 7:56
igor_bogomolov Цитата(ViGOur @ 29.5.2009, 8:56) Просто к... 29.5.2009, 9:13
Litkevich Yuriy Цитата(igor_bogomolov @ 29.5.2009, 13:13)... 29.5.2009, 9:18
ViGOur Это я сам дурак, ограничение в запросе стояло, пот... 29.5.2009, 9:23
ViGOur Блин, вот думаю исходник SUBROG'a выкладывать ... 29.5.2009, 19:49
igor_bogomolov Цитата(ViGOur @ 29.5.2009, 8:56) igor_bog... 29.5.2009, 22:31
ViGOur Цитата(igor_bogomolov @ 29.5.2009, 23:31)... 29.5.2009, 23:31
Litkevich Yuriy Цитата(kwisp @ 30.5.2009, 14:42) может во... 30.5.2009, 11:32
SABROG Не должно muzhik'у быть одному, поэтому я скле... 28.10.2009, 23:36
SABROG Это тролли так шутят или они действительно планиру... 30.10.2009, 23:31
Litkevich Yuriy Ну, а почему бы в 5-ке этому не появится (пострисо... 30.10.2009, 23:36
SABROG Цитата(Litkevich Yuriy @ 31.10.2009, 0:36... 30.10.2009, 23:46
BRE Цитата(SABROG @ 30.10.2009, 23:46) Ну есл... 30.10.2009, 23:50
Litkevich Yuriy Цитата(BRE @ 31.10.2009, 2:50) Думаю год ... 31.10.2009, 1:23
Litkevich Yuriy Тему разделил: Ализе́ Жакоте 31.10.2009, 13:49
Litkevich Yuriy Может будет интересно: тык 6.11.2009, 4:43![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 13.12.2025, 16:54 |