#include#include #include #include #include class MainConsole : public QObject { Q_OBJECT public: explicit MainConsole(QObject *parent = nullptr) { m_engine.rootContext()->setContextProperty("MainConsole",this); // 这里相当于是将类 MainConsole 注册到qml中的,那么在qml文件中可以调用该类的函数 } Q_INVOKABLE void showBack() { qDebug()<<"该函数是从QML中发起调用的"; } //通过Q_INVOKABLE宏标记的public函数可以在QML中访问 private: QQmlApplicationEngine m_engine; // 加载qml的引擎 }; // qml 文件 main.qml import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.2 Window { id:root visible: true width: 480 height: 640 //anchors.fill: parent title: qsTr("ScanCode") //signal qmlSigScanResult(String ret) Shortcut{ sequences: ["Esc","Back"] onActivated: { //console.log("--->>Shortcur<<---") if(stackview.depth > 1){ console.log("enter") stackview.pop() } else{ //console.log("exit") //root.hide() // 函数调用 MainConsole.showBack() } } } Loader { sourceComponent: mycomp height:200 width:200 } Component{ id:mycomp Rectangle{ objectName: "TextExtend" function intoScan(msg){ //stackview.push("qrc:/src/ScanPage.qml") } } } StackView{ id:stackview anchors.fill: parent initialItem: "qrc:/src/ScanPage.qml" // 初始化为ScanPage.qml 页 } }



