Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 21.5.2011, 16:01 |
Но почему нельзя чтобы рисовалось на виджете наследованном от QGraphicsView? а зачем!?!?!?!?если тебе нужен велосипед с тремя колёсами, и у тебя будет выбор для основы - Простой велосипед, ..., БелАЗ. Ты же не будешь за основу БелаАЗ(!) брать, правильно? |
|
bayah | Дата 21.5.2011, 15:42 |
блин, унаследовался от QWidget и тогда только нарисовалось. Но почему нельзя чтобы рисовалось на виджете наследованном от QGraphicsView? |
|
bayah | Дата 21.5.2011, 10:52 |
Цитата ты что-то вообще не то делаешь. а что я не то делаю? я переоределяю paintEvent у созданного мной потомка от QGraphicsView QgraphicsView тут я использую как обычный виджет с возможностью рисовать на нем. Цитата В Qt есть два способа рисования: Артур (рисование в paintEvent виджета) ну вот я и рисую так вроде бы? |
|
Litkevich Yuriy | Дата 21.5.2011, 7:12 |
ты что-то вообще не то делаешь. В Qt есть два способа рисования: Артур (рисование в paintEvent виджета), и Грфическое представление (создание элементов на сцене и отображение их в представлении). |
|
bayah | Дата 21.5.2011, 1:48 |
Цитата а почему от QGraphicWidget, а не от QWidget? Ой - QGraphicsView, а не QGraphicsWidget коечно же - это описка.
|
|
Litkevich Yuriy | Дата 20.5.2011, 21:10 |
унаследовав его от QGraphicWidget а почему от QGraphicWidget, а не от QWidget? |
|
bayah | Дата 20.5.2011, 18:31 |
Хотя у меня че-то не работает даже примитивный код. Тут я пытаюсь унаследовать от создать класс DrawWidget унаследовав его от QGraphicWidget переопределив в нем paintEvent и отрисовать в нем что нибудь. Вот такой код. Почему не отрисовывается? drawwidget.h
drawwidget.cpp
main.cpp
|
|
bayah | Дата 20.5.2011, 10:03 |
Да, спасибо, уже разобрался. Короче придется наследовать класс, в нем переопределять QPaintEvent, потом создавать его динамически... Поначитал тут столько извращений, типа как рисовать на дочернем виджете из родительского окна: перехватывать сообщения, вызывать отрисовку потомка, потом рисовать поверх. У меня все равно почему-то не заработало, но это ладно - от такого подхода я уже отказался. Буду либо переопределять, либо рисовать на QGraphicsView с помошью QPainterPath, QGraphicsScene. А эту тему можно закрыть и даже удалить лучше, - чтобы те, кто будет искать ответы на вопросы подобные моим в этой теме не спотыкались.) |
|
Litkevich Yuriy | Дата 19.5.2011, 6:12 |
Потому-что рисование осуществляется не в произвольном месте программы, а в обработчике события рисования QWidget::paintEvent. Что приведено в элементарном примере из описания класса QPainter: Цитата Warning: When the paintdevice is a widget, QPainter can only be used inside a paintEvent() function or in a function called by paintEvent(); |
|
bayah | Дата 18.5.2011, 16:44 |
Не пойму как толком работает QPainter. Поэтому вот элементарный код который я тестил:
} В результате ничего не отображается. Почему? Сразу задам мучающие меня вопросы по этому поводу: - для чего метод begin(QPaintDevice*), если мы девайс для отрисовки указываем и так при создании? - (собственно что мне нужно от этой отрисовки) как вывести на главный виджет какую нибудь область(другой виджет - QGraphicsView, например) и рисовать только на нем мерси |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 11:56 |