QtQml开发 - 交互之Cpp调用Qml界面

相关

如果考虑到在QML界面上完成交互,会有一点类似前后端分离的感觉;具体交互可以参考

qml访问cpp

场景

初步应用qml界面,主体逻辑还是在cpp上,qml仅用于实现界面

方案

加载qml文档生成界面

需要界面容器QQmlComponent 、QQuickWidget、QQuickView,其中使用QQuickView时不能使用window作为根元素

访问/设置属性/方法method

 QQuickView view(QUrl("qrc:/main.qml"));

 view.show();

 QObject *qmlObj=view.rootObject();


//QQmlProperty
qmlObj->property("msg");

QQmlProperty(qmlObj,"height").write(300);

//QQuickItem
QQuickItem *item=qobject_cast<QQuickItem*>(qmlObj);

item->setWidth(300);
item->width();

//QObject
QObject *qmlRect=qmlObj->findChild<QObject*>("rect");
    
if(qmlRect){
    qmlRect->property("color");
}

//调用QML方法
QVariant val_return;  //返回值
QVariant val_arg;  //参数值

QMetaObject::invokeMethod(qmlObj,
                              "qml_method",
                              Q_RETURN_ARG(QVariant,val_return),
                              Q_ARG(QVariant,val_arg));

//信号槽
QObject::connect(...);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值