Название: 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)
|