Qt C++;向Qml发送信号 我试图在QML中捕获一个C++ QT信号。我能够发送一个信号,在Qt中捕捉一个Qml信号也在工作;但是,我无法在Qml中捕获Qt信号
我需要哪个QObject::connect 最小main.cpp:Qt C++;向Qml发送信号 我试图在QML中捕获一个C++ QT信号。我能够发送一个信号,在Qt中捕捉一个Qml信号也在工作;但是,我无法在Qml中捕获Qt信号,c++,qt,qml,signals,slot,C++,Qt,Qml,Signals,Slot,我需要哪个QObject::connect 最小main.cpp: #include <QtGui/QGuiApplication> #include <QtQml/QQmlApplicationEngine> #include <QQmlContext> #include <QQuickWindow> #include "qmlcppapi.h" int main(i
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlApplicationEngine>
#include <QQmlContext>
#include <QQuickWindow>
#include "qmlcppapi.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<QmlCppApi>("com.handleQmlCppApi",1,0,"HandleQmlCppApi");
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/qml/qmlfile.qml"));
QmlCppApi api;
engine.rootContext()->setContextProperty("api", &api);
engine.load(url);
QObject::connect(&api, &QmlCppApi::testStringSended,
&api, &QmlCppApi::printTestString);
return app.exec();
}
输出:
qml: send
cpp: recieved
cpp: sended
为什么我的Qml没有收到信号?您有两个创建的QmlCppApi实例。一个在main.cpp中,您调用
api
,另一个在QML中,QML是未命名的handleqmlcpapi对象。你只需要其中一个。要从api
捕获信号,需要一个Connections
对象,如下所示:
Connections {
target: api
onTestStringSended: console.log("recieved")
}
qml: send
cpp: recieved
cpp: sended
Connections {
target: api
onTestStringSended: console.log("recieved")
}