crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

SABROG
  опции профиля:
сообщение 26.5.2009, 11:52
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Есть желание рисовать на дочерних окошках, причем хочется оставить их оригинальный render и рисовать поверх уже готовой картинки. Ввиду того, что дочерних элементов может быть сколько угодно, я не могу (а скорее не хочу) унаследоваться от каждого из них. Поэтому я использую installEventFilter.

Получился такой код:

bool MainWindow::eventFilter(QObject *o, QEvent *e)
{
    if (e->type() == QEvent::Paint && o->isWidgetType()) {
        QPaintEvent *pe = (QPaintEvent *)e;
        QWidget *w = (QWidget *)o;
        qDebug() << "painting:" << o;

        QObject::eventFilter(o, e); //пытаемся вызвать оригинальный обработчик, чтобы сам себя нарисовал
        QPainter p(w); // пытаемся нарисовать что-то поверх уже нарисованного
        p.setRenderHint(QPainter::Antialiasing,true);
        p.drawLine(QPointF(0,0),QPointF(20,90));
        return true; //говорим системе, что мы перехватили, чтобы не отправлял событие дальше, а следовательно и не перерисовывал
    } else {
        return QObject::eventFilter(o, e);
    }
}


Но не получается. Если убрать первый QObject::eventFilter(o, e);, то виджет рисуется поверх линии, т.е. она остается на заднем плане. Если оставить, то рисуется вообще только одна линия, оригинального изображения виджета нет. paintEvent вызвать напрямую не могу, т.к. он protected, render() и repaint() приводят к рекурсии, естественно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
11 страниц V  « < 7 8 9 10 11 >  
Начать новую тему
Ответов (80 - 89)
Litkevich Yuriy
  опции профиля:
сообщение 28.5.2009, 19:19
Сообщение #81


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


igor_bogomolov, Прикольно получилось
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.5.2009, 20:06
Сообщение #82


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(igor_bogomolov @ 28.5.2009, 19:17) *
Твою статью можно смело в QQ размещать
Угу, только думаю нужно грамотно перевести на английский и заслать им. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 28.5.2009, 20:55
Сообщение #83


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


igor_bogomolov, выложи, пожалуйста, исходники с мужиком :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 21:15
Сообщение #84


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Kagami)
igor_bogomolov, выложи, пожалуйста, исходники с мужиком

Выкладываю. Правда координаты где мужика рисую я жестко задавал. Цель была разобраться как работать с гиф анимацией, т.е. считывать кадр из гифки.
Прикрепленные файлы
Прикрепленный файл  muzhik.zip ( 24.15 килобайт ) Кол-во скачиваний: 685
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.5.2009, 7:56
Сообщение #85


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


igor_bogomolov, выложил твоего мужика на сайт: http://www.crossplatform.ru/node/887. Скорее всего не только Kagami будет интересно посмотреть.

Как зайдешь на сайт, смогу тебе сделать автором данного исходника, чтобы мог поправить или добавить описание. Просто как я понял ты туда ниразу не заходил, по крайней мере залогиненым на форуме. :)

Сообщение отредактировал ViGOur - 29.5.2009, 7:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.5.2009, 9:13
Сообщение #86


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(ViGOur @ 29.5.2009, 8:56) *
Просто как я понял ты туда ниразу не заходил, по крайней мере залогиненым на форуме.
Так это же главная страница сайта. Всегда на форум захожу через неё. А регистрация по всему ресурсу автоматическая. Сегодня при входе был приятно удивлён, увидев там знакомого мужика.

"Работа с гиф анимацией" - на данный момент звучит очень громко. Там десяти строк не наберется. За все отвечает класс QImageReader, с которым я до конца так и не разобрамся. По данному вопросу я новую тему создам чуть позже.

Предлогаю переименовать "Работа с гиф анимацией". Там всетаки вся прелесть не в работе с гиф, а в самом методе рисования. SABROG использовал термин overpainting. Может стоит его придерживаться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.5.2009, 9:18
Сообщение #87


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(igor_bogomolov @ 29.5.2009, 13:13) *
SABROG использовал термин overpainting. Может стоит его придерживаться?
может мы его по-русски запишим? Подберём подходящий вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.5.2009, 9:23
Сообщение #88


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Это я сам дурак, ограничение в запросе стояло, потому тебя и не нашел.

Сделал тебя автором статьи-исходника, так что можешь поправить как хочешь. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.5.2009, 19:49
Сообщение #89


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Блин, вот думаю исходник SUBROG'a выкладывать на сайте или нет? В принципе есть статья в вики.
Просто он также интересен и полезен! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.5.2009, 22:31
Сообщение #90


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(ViGOur @ 29.5.2009, 8:56) *
igor_bogomolov, выложил твоего мужика на сайт
Цитата(ViGOur @ 29.5.2009, 20:49) *
Блин, вот думаю исходник SUBROG'a выкладывать на сайте или нет?
Это один и тот же код :) Анимация только разная. В первом звездочки, во втором "мужик". Поэтому я и предлогал переименовать.
Цитата(igor_bogomolov)
Там всетаки вся прелесть не в работе с гиф, а в самом методе рисования.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

11 страниц V  « < 7 8 9 10 11 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 26.5.2025, 4:26