Russian Qt Forum
Ноябрь 24, 2024, 08:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsItem не получается послать сигнал  (Прочитано 4293 раз)
alexlogvinenkoit
Гость
« : Февраль 13, 2012, 16:14 »

Всем привет!

Дело вот в чем: есть класс, наследующийся от QGraphicsItem (пример ElasticNodes в Qt). Я вот переписываю под свои нужды, появилась необходимость послать сигнал при клике на этот объект. Т.к. события Press и Release уже реализованы - решил просто создать сигнал (QString signalGetName() { return this->name; }) и просто при событии emit signalGetName();
Далее, в другом классе создал слот (void nodeSelected(QString)) и, как обычно, при создании узла

Код:
connect(node, SIGNAL(signalGetName()), this, SLOT(nodeSelected(QString)));

Вот это как раз и не срабатывает

Цитировать
D:\QtProjects\SM-build-desktop-Qt_4_8_0_for_Desktop_-_MSVC2010__Qt_SDK_________\..\SM\graphwidget.cpp:235: ошибка: C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)' : cannot convert parameter 1 from 'Node *' to 'const QObject *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Пробовал явно приводить к типу QObject *, и даже пробовал qobject_cast - не помогает.
Пробовал класс, наследующийся от QGraphicsItem еще наследовать и от QObject - тогда ошибка не выскакивает, но ничего не происходит.

И еще: вот я чего-то не пойму, разве в Qt не все классы так или иначе наследуются от QObject?

Спасибо!
Записан
mutineer
Гость
« Ответ #1 : Февраль 13, 2012, 16:20 »

ну не может у слота быть больше параметров, чем у сигнала! не может!

И возвращать значение сигнал тоже не может! и нельзя самому реализовывать тело сигнала!

И да, QGraphicsItem не является наследником QObject
« Последнее редактирование: Февраль 13, 2012, 16:23 от mutineer » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Февраль 13, 2012, 16:35 »

Для сигналов/слотов имеется специальный QGraphicsObject.
Но для начала не мешало бы понимать Сигналы и слоты.
« Последнее редактирование: Февраль 13, 2012, 16:39 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
alexlogvinenkoit
Гость
« Ответ #3 : Февраль 13, 2012, 16:40 »

Что-то не врублюсь, блин.

А можете на примере простом показать или ссылку на пример кинуть примерно вот такого:

1-й класс имеет сигнал, который возвращает private значение класса
2-й класс имеет слот, который принимает в себя private-тип значения первого класса и соединяется с этим классом

Теперь, в первом классе остается послать (emit) сигнал, а во втором выполнится обработка слота, в параметры функции передав private-значение первого класса

Заранее спасибо!
Записан
mutineer
Гость
« Ответ #4 : Февраль 13, 2012, 16:54 »

Читай документацию Qt до полного понимания - там расжевано досконально создание своих сигналов, своих слотов, передача параметров через сигнал-слот
Записан
wildcat
Гость
« Ответ #5 : Февраль 13, 2012, 18:52 »

Почитай отсюда
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 22.