Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alexlogvinenkoit от Февраль 13, 2012, 16:14



Название: QGraphicsItem не получается послать сигнал
Отправлено: 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?

Спасибо!


Название: Re: QGraphicsItem не получается послать сигнал
Отправлено: mutineer от Февраль 13, 2012, 16:20
ну не может у слота быть больше параметров, чем у сигнала! не может!

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

И да, QGraphicsItem не является наследником QObject


Название: Re: QGraphicsItem не получается послать сигнал
Отправлено: GreatSnake от Февраль 13, 2012, 16:35
Для сигналов/слотов имеется специальный QGraphicsObject.
Но для начала не мешало бы понимать Сигналы и слоты (http://www.doc.crossplatform.ru/qt/4.7.x/signalsandslots.html).


Название: Re: QGraphicsItem не получается послать сигнал
Отправлено: alexlogvinenkoit от Февраль 13, 2012, 16:40
Что-то не врублюсь, блин.

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

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

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

Заранее спасибо!


Название: Re: QGraphicsItem не получается послать сигнал
Отправлено: mutineer от Февраль 13, 2012, 16:54
Читай документацию Qt до полного понимания - там расжевано досконально создание своих сигналов, своих слотов, передача параметров через сигнал-слот


Название: Re: QGraphicsItem не получается послать сигнал
Отправлено: wildcat от Февраль 13, 2012, 18:52
Почитай отсюда (http://qtdocs.narod.ru/4.1.0/doc/html/signalsandslots.html)