crossplatform.ru

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

> QPainter для самопального виджета
anater
  опции профиля:
сообщение 11.10.2010, 20:11
Сообщение #1


Студент
*

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

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




Репутация:   0  


Итак доброшо времени суток.

Имею самопальный виджет унаследованный от QWidget.

В нем есть всякие поля тестовые кнопочки и прочая мишура.

И есть виджет в котором должна рисоваться картинка... Вопроса собственно два.
Как прикрутить QPainter конкретно к данному встроеному виджету?

QPainter painter (this)ж в paintEvent не особенно хорошо работает ибо рисуемые элементы запросо налезают на соседей.

Как конкретно рисоваться во встроеном виджете?

Спасибо за вменяемые ответы :)

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 11.10.2010, 21:57
Сообщение #2


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

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

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




Репутация:   29  


Ну второй вариант примерно так выглядеть будет
В класс Pb добавь bool eventFilter(QObject *obj, QEvent *event)
protected: // paintEvent в данном классе переопределять не надо
     bool eventFilter(QObject *obj, QEvent *event);


В конструкторе того же класса
Pb::pb(QFrame *parent):QFrame(parent)
{
    qwpb->installEventFilter(this);


реализация фильтра событий
 bool Pb::eventFilter(QObject *obj, QEvent *event)
{
     if (event->type() == QEvent::Paint && obj == qwpb) {
         QPaintEvent *e = static_cast<QPaintEvent *>(event);
         QPainter painter(this);
         painter.drawImage(...);
                 ... // здесь в общем то что нужно рисуешь
         return true;
     } else {
         return QObject::eventFilter(obj, event);
     }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
anater
  опции профиля:
сообщение 13.10.2010, 19:26
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(igor_bogomolov @ 11.10.2010, 22:57) *
Ну второй вариант примерно так выглядеть будет
...

Спасибо по этому варианту получилось весьма симпатично!
Причина редактирования: не цитируй целыми сообщениями, тем более такими большими
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 29.3.2024, 16:26