统一QML与C++互调方式

本文介绍了在QML开发中如何统一QML与C++的交互方式,通过`callCppFunc`调用C++函数,利用信号`sig_callQml`调用QML函数,简化开发流程并提高代码维护性。详细阐述了头文件、源文件及QML文件的设置,实现了通过字符串标识不同功能和传输任意参数的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QML开发过程中除了UI开发剩下的就是QML与C++互调方式了
最近开始学习Qt的QML开发,主要原因是原有的qwidget开发效率感觉实在不高,所以学一下QML好应用到以后的项目中,提高客户端开发效率。

为每个功能都去写函数啥的,我觉得挺麻烦的。所以我认为统一调用入口,以后开发过程更加简单,也更好维护。

QML调用C++统一用
callCppFunc(qstring funcName,QMap<qstring,qvariant> parDdata)
C++调用QML里面的函数用—信号方式
emit sig_callQml(qstring funcName,QMap<qstring,qvariant> parDdata)

下面是使用方式
首先是头文件myclass.h文件

#include <QObject>
#include <QVariantMap>

class Myclass : public QObject
{
    Q_OBJECT
public:
    explicit Myclass(QObject *parent = nullptr);
signals:
    void sig_callQml(QString funcStr,QVariantMap  data);
public:
    Q_INVOKABLE QString callCppFunc(QString funcStr,QVariantMap  data);
private:
    QString m_str="";
};

myclass.cpp

#include "myclass.h"
#include<QDebug>

Myclass::Myclass(QObject *parent) : QObject(parent)
{
}

void Myclass::slot_tst(QString _str)
{
    m_str = _str;
    qDe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值