Слот Q ++ Сигнал QML по зарегистрированному типу

Я пытаюсь вызвать слот QML для зарегистрированного типа, подняв сигнал в моем коде C ++. Слот никогда не вызывается.

В main.cpp я регистрирую тип:

qmlRegisterType<MsgController>("MyStuff",1,0,"MsgController");

в msgcontroller.h я объявляю сигнал:

class MsgController : public QObject
{
Q_OBJECT
public:
...
signals:
void msgReceived(const QString& msg);

в msgcontroller.cpp поднимаю сигнал

void MsgController::setMsg(const QString &msg)
{
emit msgReceived(msg);
}

и в моем файле main.qml у меня есть слот для msgReceived:

import MyStuff 1.0
MsgController {
onMsgReceived: {
console.log("message received:"+msg);
}
}

Слот onMsgReceived никогда не вызывается. Я что-то пропустил?

0

Решение

Я не понял, что я подключился к неправильному экземпляру MsgController в моем коде. Один экземпляр был создан кодом C ++, но я действительно хотел вызвать слот для экземпляра, созданного механизмом Qml.
Как только я подключился к правильному экземпляру, приведенный выше код работал нормально.

0

Другие решения


По вопросам рекламы [email protected]