栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QML中调用c++代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QML中调用c++代码

#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 页
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号