Название: Перерисовка 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 Зачем так без знаний фреймворка кидаться на реализацию не самой простой задачки. Почитайте спокойно Шлее - многое проясниться.
|