crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

AlexandrosLiberalis
  опции профиля:
сообщение 17.8.2014, 11:24
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 21.7.2014
Пользователь №: 4193

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

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

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

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

Класс Node уже содержит метод mouseReleaseEvent() и, в моём понимании, его необходимо соединить с каким то слотом в главном диалоге, который в свою очередь всё перерисует.
Подскажите пожалуйста, как это сделать.
проект прилагаю.
Прикрепленные файлы
Прикрепленный файл  FF.ZIP ( 13.12 килобайт ) Кол-во скачиваний: 233
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Trisch
  опции профиля:
сообщение 17.8.2014, 11:41
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 379
Регистрация: 30.1.2012
Из: Запорожье
Пользователь №: 3169

Спасибо сказали: 24 раз(а)




Репутация:   0  


в методе mouseReleaseEvent() вы посылаете сигнал, который соединен с слотом, который в свою очередь все обновляет.

дополнительная инфа по сигналам и слотам

Сообщение отредактировал Trisch - 17.8.2014, 11:43
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
afrit
  опции профиля:
сообщение 23.8.2014, 20:48
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 12.2.2014
Пользователь №: 4053

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Trisch @ 17.8.2014, 12:41) *
в методе mouseReleaseEvent() вы посылаете сигнал, который соединен с слотом, который в свою очередь все обновляет.
дополнительная инфа по сигналам и слотам


Беда в том, что Node и Edge наследуются от QGraphicsItem, который в свою очередь о QObject ничего не знает, сигналы/слоты работать не будут.
Как вариант, используйте QGraphicsObject или самостоятельно сделайте двойное наследование.
А вообще, если я правильно понял задачу, посмотрите на http://qt-project.org/forums/viewthread/33448
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.6.2025, 20:17