QML和c ++之间的信号和插槽

时间:2017-05-24 11:13:50

标签: c++ qt qml

我的问题是,我无法在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文件中找到了Signal,但没有找到QML中的Slot。

main.qml:

function bla()
{
    console.log("bla")
}

这是我的main.qml文件中的函数。

那么哪里有错误?

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

解决方案是:

只需连接QML内的信号而不是C ++

示例:

<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>3.0.2</version> </dependency>