我的问题是,我无法在cpp和qml文件之间获得信号和插槽连接。首先,我在网络上找到了一些解决方案,但它不起作用。我敢肯定,这个错误是我的,但我没有找到。
main.cpp:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>
#include <QQmlContext>
#include "Hotfolder.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QScopedPointer<cReadJson> jsonReader(new cReadJson);
QScopedPointer<cHotfolder> hotfolder(new cHotfolder);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
engine.rootContext()->setContextProperty("jsonReader", jsonReader.data());
engine.rootContext()->setContextProperty("hotfolder", hotfolder.data());
QObject *topLevel = engine.rootObjects().at(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
QObject::connect(&cHotfolder, SIGNAL(sigNewOrder()), window, SLOT(
// Here is the mistake, that I can't find the Slot in QML
return app.exec();
}这是我的main.cpp文件。在这个文件中,我找到了来自cpp文件的信号,但没有找到QML中的插槽。
main.qml:
function bla()
{
console.log("bla")
}这是我的main.qml文件中的函数。
那他犯了什么错?
事先非常感谢!
本
发布于 2017-05-24 12:56:18
解决办法是:
只需从QML内部连接到信号,而不是从C++连接。
示例:
Component.onCompleted: hotfolder.sigNewOrder.connect(bla)
https://stackoverflow.com/questions/44156726
复制相似问题