Qt Quick介绍

一.Qt Quick介绍

Qt Quick 是 QML 类型和功能的标准库,包括视觉类型、交互式类型、动画、模型和视图、粒子效果和着色效果
Qt Quick 使用 QML 作为声明语言,来设计以用户界面为中心的应用程序
QML 包含大量使用手机移动设备的功能模块,比如基本部件(QtQuick 模块)、GPS 定位、渲染特效、蓝牙、NFC、WebkKit 等等;

二.QML 介绍

QML 是一种用户界面规范和标记语言,允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序,像 C++ 一样,QML 是一种语言,文件格式以 .qml 结尾
QML 提供了一种高度可读、声明性、类似 JSON 的语法,支持与动态属性绑定相结合的命令式 JavaScript 表达式;

三.QML与C++混合编程

1.混合编程介绍

混合编程就是通过QML高效便捷的构建UI界面,而使用C ++来实现业务逻辑和复杂算法
Qt集成了QML引擎和Qt元对象系统,使得QML很容易从C ++中得到扩展;QML可以访问QObject派生类的成员如:信号 (signals),槽函数 (slots),枚举类型 (Q_ENUMS),属性 (Q_PROPERTY),成员函数 (Q_INVOKABLE );

2.QML调用C++
(1)方式一:

在C ++中实现一个派生自QObject的类,类中定义成员函数时使用Q_INVOKABLE宏来修饰;类中的属性或成员变量要用Q_PROPERTY 宏来修饰
在private区声明Q_OBJECT宏
使用qmlRegisterType()函数,将该类注册到QML环境中
QML环境中使用该类型创建QQmlApplicationEngine的对象,使C ++类在QML中作为一个数据类型,例如函数参数类型或属性类型,也可以使用其枚举类型、单例等,功能更强大
在QML上使用QQmlContext::setContextProperty(); 直接嵌入一些 C++ 数据或对象为上下文属性给QML使用
可以把 C++ 对象的信号连接到 QML 中定义的方法上,也可以把 QML 对象的信号连接到 C++ 对象的槽上,还可以直接调用 C++ 对象的槽或信号

(2)方式二:

在C ++中构造一个对象
将这个对象设置为QML的上下文属性
在QML环境中直接使用该属性

3.C++调用QML

在 C++ 中可以用QQmlComponent或QQuickView加载QML文件就可以访问QML对象了。QQuickView提供了一个显示用户界面的窗口,而QQmlComponent没有。
C++ 访问QML的属性:
先创建QQmlEngine 类型的引擎对象
创建QQmlComponent组合对象为引擎对象加载qml文件
调用QQmlComponent组合对象create()方法创建一个QObject对象
调用QObject的findChild()方法或findchildren()方法查询指定元素
调用QObject的property()和setProperty()方法动态获取或修改QML中元素的属性;
使用QQmlProperty::read()/write()来读取、修改height属性值
C++ 访问QML的函数和信号:
在C++中使用 QMetaObject::invokeMethod() 静态方法调用QML中的函数;
C++中使用 QObject::connect() 连接QML中的信号;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-邮票组合问题

[题目描述] 某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?输入格式: 此题无输入。输出格式: 输出可以得到不同邮资的数量。 样例输入 无样例输出 19数据范围: 对于100%的…

使用invokeMethod异步执行QT函数操作

在QT窗口初始化加载的时候如果执行比较耗时的操作,很容易阻塞主界面的显示,导致用户体验差。这时候一般我们可以通过定时器延时加载对应的操作。其实使用QMetaObject::invokeMethod方法也可以实现异步加载,操作更简单效果更好。两种方式如下: //异步执行loadData函数 //Qt:…

【抽代复习笔记】21-群(十五):循环群引理及定义

例4:证明,如果σ(i1 i2 … ik)是Sn中的一个k-循环,而r∈Sn,则rσr^(-1)也是一个k-循环,且rσr^(-1)(r(i1),r(i2),…,r(ik))。 证:①设σ(i1 i2 … ik)(i1 ik)(i1 ik-1)…(i1 i2), 则rσr^(-1)…

触想工业一体机在智慧医疗智能采血管理系统中的应用

一、行业发展前景 作为医院重点科室之一,传统的检验科采血环节存在诸多痛点,特别在备管阶段,大量患者信息的核对、试管条码打印、选管、贴标等繁琐步骤均依赖人工操作,工作强度大、效率低,易出错。 随着智慧医院建设的…

笔记-python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel&…

秋招突击——6/21——新作{两两交换链表中的节点,K个一组反转链表}

文章目录 引言新做删除有序数组中的重复项个人实现 K 个一组翻转链表个人实现参考代码 总结 引言 上午完全去听讲座了,听了三场,拿了三个讲座单,从九点一直到十二点。笔记本电脑插电才能用,就没带,所以没有进行复习。…

qt开发-08_layout 布局

Qt 提供了非常丰富的布局类,基本布局管理类包括:QBoxLayout、QGridLayout、QFormL ayout 和 QStackedLayout。这些类都从 QLayout 继承而来,它们都来源于 QObject(而不是 QWi dget)。创建更加复杂的布局,可…

设置PowerShell打开默认路径是桌面,方便在桌面运行py程序

1.打开 PowerShell 以管理员身份运行。右键点击 PowerShell 图标,然后选择“以管理员身份运行”。 查看当前执行策略: Get-ExecutionPolicy2.更改执行策略: 为了允许脚本运行,你可以将执行策略设置为 RemoteSigned 或 Unrestricted。下面的命令将执行策略更改为 RemoteS…

广东省建筑施工安管人员考核报名流程及照片处理方法

广东省建筑施工企业安管人员考核工作现已全面启动,这对于提升建筑行业的安全生产管理水平至关重要。为了确保广大考生能够顺利报名并参与考核,本文精心梳理了考核报名流程,并提供了证件照的规范处理方法。同时,针对证件照这一关键…

windows端口被占用问题,杀死进程

描述:端口被占用 在使用IntelliJ IDEA运行程序时,可能会遇到端口占用的情况,这通常由以下几个原因引起: 1、同一程序多次启动:如果你没有正确关闭之前运行的程序实例,再次尝试运行相同的程序时,…

mysql 库存表 累计 sql语句 第一方法

这是一个表,要求累计金额 。表名t ,字段lsh,shangpinbh,jine。 流水号商品编号金额累计金额1100125002500210013000550031004400095004100610001050051007200012500 select lsh,shangpinbh,jine,(select sum(jine) from t where …

使用 ProGuard 混淆你的 Java 代码

使用 ProGuard 混淆你的 Java 代码 一、简介二、配置pom三、使用混淆后的 JAR 文件四、总结 一、简介 ProGuard 是一款流行的 Java 代码混淆工具,可以混淆和优化你的代码,使其更难被反编译和分析。混淆通过重命名类、方法和变量名称来实现,从…

短剧app系统开发源码对接聚合广告

短剧APP是一种专门用于观看、创作和分享短剧的移动应用程序。它通常集成了视频播放、社交互动、内容创作等功能,为用户提供了一个便捷的短剧观赏和交流的平台。 短剧APP的特点如下: 时长短:短剧APP提供的短剧内容通常精简扼要,每…

QMetaEnum 使用详解

QMetaEnum 是 Qt 框架中的一个类,它提供了关于枚举类型的元数据信息。以下是 QMetaEnum 使用的详解: 1. 自定义枚举类型 在使用 QMetaEnum 之前,你需要先定义一个枚举类型,并且确保它是 QObject 的子类的一部分。你可以使用 Q_E…

兴顺物流管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,驾驶员管理,物流资讯管理,车辆管理,基础数据管理 员工账户功能包括:系统首页,个人中心,物流资讯管理&…

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录 引言复习新作删除链表倒数第N个节点题目描述个人实现参考实现 总结 引言 主管面,面的很凄惨,不过无所谓了,我已经尽力了。上午都在整理的面经,没有复习算法,而且这两天要弄一下论文,二十号就要提…

C#使用Scoket实现服务器和客户端互发信息

20240616 By wdhuag 目录 前言: 参考: 一、服务器端: 1、服务器端口绑定: 2、服务器关闭: 二、客户端: 1、客户端连接: 2、客户端断开: 三、通讯: 1、接收信…

Hallo技术:革新电影、游戏与虚拟现实中的动态肖像动画

在数字娱乐的浪潮中,逼真的动态肖像动画成为了电影制作、游戏开发和虚拟现实等领域不可或缺的一部分。复旦大学研发的Hallo技术,以其独特的扩散模型和分层音频驱动视觉合成模块,为这一领域带来了革命性的突破。 技术概览 Hallo技术是一种基…

GSettings(三)——GSettings底层原理

GSettings 是基于 D-Bus 的高级配置系统,主要用于 GNOME 桌面环境和其他依赖 GSettings 的应用程序。它通过 GObject 库与 DConf 进行通信,以便读取和写入配置数据。 GSettings 工作原理 GSettings API: 开发人员通过 GSettings API 来读取和…