根据Qt qml类型文档
quit()
此函数导致发出 QQmlEngine :: quit()信号。在使用qmlscene进行原型制作时,这会导致启动器 申请退出;当此方法退出时,退出C ++应用程序 调用,将 QQmlEngine :: quit()信号连接到 QCoreApplication :: quit()插槽。
所以要退出QML中的C ++应用程序,我必须调用此
Qt.quit()
在QML文件中,但这仅退出QML引擎,我也需要关闭C ++应用程序。
这是我的尝试
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QScopedPointer<NFCclass> NFC (new NFCclass);
QQmlApplicationEngine engine;
QObject::connect(engine, QQmlEngine::quit(), app, QCoreApplication::quit());
// here is my attempt at connecting based from what i have understood in the documentation of signal and slots
engine.rootContext()->setContextProperty("NFCclass", NFC.data());
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
非常感谢您能为我提供帮助:)
我认为是因为我不知道QtCore的对象,这就是为什么该行引发错误
================================================ =========================== 编辑:
eyllanesc作品给出的答案。
但是当我完成时执行Qt.quit()时,它不会退出。它可以在按钮上工作
ApplicationWindow {
id:root
visible: true
width: 480
height: 640
title: qsTr("Hello World")
Component.onCompleted: {
Qt.quit()
}
Button{onClicked: Qt.quit()}
}
答案 0 :(得分:2)
您必须学习使用new connection syntax in Qt,具体情况如下:
use App\Post;
更新:
第二种情况的解决方法是使用Qt.callLater()
QObject::connect(&engine, &QQmlApplicationEngine::quit, &QGuiApplication::quit);