QML 与 C++交互 - 03 C++访问QML属性与函数

本文介绍了如何在C++中访问和操作QML对象的属性、调用QML函数以及连接QML信号。通过objectName获取QML对象,使用QQmlEngine和QQmlComponent加载QML文件,详细讲解了读写属性、调用函数及信号处理的方法。

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

一、前言

所有的QML对象类型都是源自QObject类型,因此,QML引擎可以使用Qt元对象系统动态的实例化QML对象,并获取所创建对象的属性与方法。也就是说一旦创建了QML对象,就可以使用C++获取它的属性、函数与信号处理。

主要从以下几个方面介绍:

1、从C++加载QML对象,并读写属性
2、调用QML的函数
3、接收QML发出的信号

二、详细说明

1、QML属性读写

假设存在一个名为MyItem.qml的文件,内容如下:

import QtQuick 2.0

Item {
    width: 100; height: 100
}

在C++中,QML文档可以使用 QQmlComponentQQuickView 来加载。加载方法如下:

// Using QQmlComponent
QQmlEngine engine;
QQmlComponent component(&engine,
        QUrl::fromLocalFile("MyItem.qml"));
QObject *object = component.create();
...
delete object;

使用QQmlComponent 需要调用QQmlComponent::create() 创建一个QObject 实例。

// Using QQuickView
QQuickView view;
view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
QObject *object = view.rootObject();

QQuickView会自动的创建一个QObject 实例,可以通过view.rootObject() 来获取。
获取QObject 对象之后可以通过以下两种方法来设置属性:

object->setProperty("width", 500);//法1
QQmlProperty(object, "width").write(500);//法2

法2相对于法1,会移除上例中的width

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值