Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: AlexandrosLiberalis от Август 17, 2014, 14:01



Название: Перерисовка QGraphicsScene.
Отправлено: AlexandrosLiberalis от Август 17, 2014, 14:01
Всем привет!

Новичок.
Я делаю программу для рисования графов.
Для рисования на QGraphicsScene есть два класса: Node и Edge.

Эти классы рисуют вершины и дуги соответственно.
Объект класса Node имеет флаг ItemIsMovable.
При добавлении объекта Edge пользователь задаёт начальный и конечный объекты Node, которые в свою очередь дают координаты для рисования линии стрелки объекта Edge.
После перемещения вершин, QGraphicsScene необходимо перерисовать, и пока я для этого использую кнопку на диалоге, в которой пишу код для рисования и в конце scene->update();

Как сделать перерисовку при перемещении вершины или её "отпускании"?

Класс Node уже содержит метод mouseReleaseEvent() и, в моём понимании, его необходимо соединить с каким то слотом в главном диалоге, который в свою очередь всё перерисует.
Подскажите пожалуйста, как это сделать.


Название: Re: Перерисовка QGraphicsScene.
Отправлено: AlexandrosLiberalis от Август 17, 2014, 14:01
В объявлении Node обозначил как сигнал

signals:
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);

В объявлении главного диалога объявил слот

public slots:
void MySlot();

В реализации главного диалога написал:

connect(node, SIGNAL(mouseReleaseEvent(QGraphicsSceneMouseEvent *event)), this, SLOT(MySlot()));

Ещё вычитал, что в объявление класса sender'а нужно добавить Q_OBJECT

Не работает.


Название: Re: Перерисовка QGraphicsScene.
Отправлено: Nidxogg от Август 17, 2014, 15:50
Если надо перерисовать только дуги, связанные с этой вершиной, то посмотри перерисовку стрелок в qt-м примере DiagramScene

P.S.
Цитировать
Ещё вычитал, что в объявление класса sender'а нужно добавить Q_OBJECT

Не работает.
Используй QGraphicsObject
http://qt-project.org/doc/qt-4.8/qgraphicsobject.html

P.P.S.Ещё можно унаследоваться от класса сцены и переопределить там mousereleaseevent


Название: Re: Перерисовка QGraphicsScene.
Отправлено: Hrundel от Август 26, 2014, 20:30
Зачем так без знаний фреймворка кидаться на реализацию не самой простой задачки. Почитайте спокойно Шлее - многое проясниться.