Название: Qt 4.2 Добавление объектов в QGraphicsScene Отправлено: svch от Октябрь 28, 2006, 17:51 Необходимо чтобы по щелчку мыши добавлялся в сцену объет (напр. эллипс или квадрат). Я написал свой класс которой наследуется от QGraphicsView.
class GraphicsWidget : public QGraphicsView { public: GraphicsWidget(); protected: void wheelEvent(QWheelEvent *event); void mousePressEvent(QMouseEvent *event); private: QGraphicsScene *scene; }; Функция mousePressEvent определена например так: void GraphicsWidget::mousePressEvent(QMouseEvent *event) { scene->addEllipse(QRectF(event->pos(), QSizeF(20, 20)), QPen(QColor(0, 199, 0))); ... } ... Проблема заключается в том что item появляется не там где я щелкнул мышкой... Как сделать что-бы объект item отображался в нужном месте и немедленно отрисовывался??? Помогите плиз!!! Название: Qt 4.2 Добавление объектов в QGraphicsScene Отправлено: Dendy от Октябрь 28, 2006, 19:25 event->pos() возвратит тебе точку в локальньІх координатах окна. Итем же, ессесна, добавляется на сцену в координатах сценьІ. Если к QGraphicsView применена матрица трансформаций, то ети координатьІ совпадать конечно же не будут. Для перевода координат предумотреньІ функции:
Код: QGraphicsView::mapToScene(); Название: Qt 4.2 Добавление объектов в QGraphicsScene Отправлено: svch от Октябрь 29, 2006, 13:38 Спасибо помогло. Метод теперь имеет такой код:
void GraphicsWidget::mousePressEvent(QMouseEvent *event) { QPointF point= this->mapToScene(event->pos()); scene->addRect(QRectF(point, QSizeF(20, 20)), QPen(QColor(0, 199, 0))); QList<QRectF> list; list.push_back(QRectF(point, QSizeF(20, 20))); this->updateScene(list); } А как можно упростить обновление сцены?(что-бы напр. не использовать QList) Название: Qt 4.2 Добавление объектов в QGraphicsScene Отправлено: Dendy от Октябрь 31, 2006, 09:44 Код: QGraphicsView::updateSceneRect(); Название: Qt 4.2 Добавление объектов в QGraphicsScene Отправлено: trailblazer от Март 11, 2007, 15:27 Выложи, пожалуйста, код конструктора,
не понимаю, как подключить QGraphicsScene к QGraphicsView в классе( добавлено спустя: вроде разобрался... |