zoukankan      html  css  js  c++  java
  • QML于C++交互之信号与槽(signal&slot )

        connect c++ SIGNAL with QML SLOT
    

    简介

    QML 与 C++ 混合编程时,总结了一下qml和c++互相直接调用、及信号与槽连接 的几种情况,详细使用情况看示例代码 
    所有的QML对象都派生自QObject,不管是可视对象还是集成在c++程序中的对象。一旦QML对象被创建,就可以集成到c++中,读写属性,调用其方法和接收其信号

    连接qml中信号与函数

        Component.onCompleted:
        {
            //qml 信号连接 qml函数
            sendMessageSigal.connect(getMessage);
        }

    连接 qml中函数与c++中信号

         Connections
            {
                //qml 连接 c++ 信号
                target:interaction
                onConnectcppsignal:
                {
                    label2.text=strMsg;
                }
    
            }

    qml中直接调用c++函数

      //on<Signal>
      onClicked:
                {
                    //qml 调用 c++函数
                    interaction.test();
                }

    连接c++中函数与qml中信号

        //c++ 函数连接 qml信号
        QObject* quitButton = root->findChild<QObject*>("quitButton");
        if (quitButton)
        {
            QObject::connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
        }

    c++中直接调用qml中函数

        QObject* textLabel = root->findChild<QObject*>("objNameL4");
        if (textLabel)
        {
            //c++ 直接调用qml函数
            QMetaObject::invokeMethod(textLabel, "setL4text");
    
        }

    c++连接信号与槽函数

     //连接c++ 信号与槽
        //QObject::connect(this,SIGNAL(valueChanged(int)),this,SLOT(setValue(int))); //qt4 语法
        QObject::connect(this,&CInteraction::valueChanged,this,&CInteraction::setValue); //qt5 新语法

    c++ 连接信号与普通函数

    //信号连接普通函数
        QObject::connect(this,&CInteraction::valueChanged,outPutInfo);

    c++ 连接信号与lambda函数

    // QObject::connect(this,&CInteraction::valueChanged,[=](int value){  qDebug()<<"lambda called, value:"<<value<<"n"; });
        QObject::connect(this,&CInteraction::valueChanged,[=,this](){  qDebug()<<"lambda called, value:"<<this->value_<<"n"; });

    代码

    代码地址

    参考

    http://blog.csdn.net/booirror/article/details/26973611 
    https://www.devbean.net/2012/04/signals-slots-in-qt5/ 
    http://doc.qt.io/qt-5/qtqml-syntax-signals.html 
    http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html#accessing-loaded-qml-objects-by-object-name

     
    http://blog.csdn.net/x356982611/article/details/53871748
  • 相关阅读:
    第三次冲刺
    第二次冲刺
    第一次冲刺
    团队学习
    git and github
    还不够格的程序员
    CF1602F. Difficult Mountain
    线性基
    欧拉回路学习笔记
    莫比乌斯反演-学习笔记
  • 原文地址:https://www.cnblogs.com/findumars/p/6555687.html
Copyright © 2011-2022 走看看