Когда вы хотите, чтобы объекты взаимодействовали между C ++ и QML, вы должны сделать это на стороне QML, поскольку получение объекта QML из C ++ может вызвать много проблем, так как в этом случае сигнал, созданный в QML, не может быть обработанв C ++.
Решение состоит в том, чтобы экспортировать ваш объект myclass
в QML и установить соединение там:
main.cpp
#include "myclass.h"
#include <QGuiApplication>
#include <QQuickView>
#include <QQmlContext>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQuickView view(QUrl("qrc:/main.qml"));
Myclass myclass;
view.rootContext()->setContextProperty("myclass", &myclass);
view.show();
return app.exec();
}
main.qml
import QtQuick 2.9
import QtQuick.Controls 1.4
Item{
id:item
signal qml_signal
Button{
onClicked: item.qml_signal()
}
onQml_signal: myclass.cppSlot()
}