Название: рисование на виджетах Отправлено: Anton от Март 24, 2006, 19:17 Использую QT41, интегратор в VS2003. Создаю главное окно приложения, там рисуется то, что хочу.
Код:
вместо this подставляю ui.label - не рисует Допустим, я не хочу рисовать на всем окне, а в какой-то определеной области или на каком-то виджете на этом окне. Как это сделать? Название: рисование на виджетах Отправлено: ElderOrb от Март 24, 2006, 20:55 Вариант 1: Смотреть в сторону виджэтных флагов, там вроде было что-то вроде paintOnScreen. Думаю если выставить его для того виджэта на котором ты думаешь рисовать - всё будет ок.
Вариант 2: Установить на тот виджэт на котором ты хочешь рисовать evntFilter через installEventFilter и отрисовку делать в методе eventFilter(QObject* o, QEvent* e) по ивенту QEvent::Paint Этим вариантом пользуюсь я сам и всё ок. Название: рисование на виджетах Отправлено: Anton от Март 24, 2006, 22:10 попробовал:
Код:
Код:
Название: рисование на виджетах Отправлено: ElderOrb от Март 24, 2006, 23:53 DrawEventCatcher является виджэтом?..
Название: рисование на виджетах Отправлено: Anton от Март 25, 2006, 08:35 Код: class DrawEventCatcher: public QObject добавлено спустя 28 минут: Код: class DrawEventCatcher: public QObject Название: рисование на виджетах Отправлено: Steven_Orko от Март 25, 2006, 13:36 Зашибись, посмотри сам, на чем ты пытаешься рисовать... На объекте, который перехватил событие, т.е. на фильтре событий? Вот и ошибка))) Если ты точно знаешь, что установил фильтр для наследника QWidget, то надо использовать указатель obj, а не this.
Код:
Название: рисование на виджетах Отправлено: Anton от Март 25, 2006, 14:43 Небольшая поправка - не QPainter paint(this); , а QPainter paint(pWidget);
и еще - работает только второй вариант, на первом прога вылетает с проблемой выделения памяти. Теперь не могу background color задать. Рисую на frame. Вообще, допустим, мне нужно, чтобы отдельно было поле для рисования белого цвета. На чем лучше рисовать кроме как на основном окне? Название: рисование на виджетах Отправлено: Steven_Orko от Март 26, 2006, 14:21 Цитата: "Anton" Небольшая поправка - не QPainter paint(this); , а QPainter paint(pWidget); Ты прав, забыл там исправить ))))Цитировать и еще - работает только второй вариант, на первом прога вылетает с проблемой выделения памяти. На остальное не отвечу, потому как не занимался еще этим. Просто увидел ошибку в коде )))) |