
QML
文章平均质量分 81
占个坑
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
调试 QML 应用程序
一、控制台接口1.1、Log使用 console.log、console.debug、console.info、console.warn 或 console.error 将调试信息打印到控制台。Window{ width: 640 height: 480 visible: true title: qsTr("Hello World") MouseArea { anchors.fill: parent onCli原创 2021-12-18 17:15:20 · 6549 阅读 · 0 评论 -
QML锚定位
除了更传统的 Grid、Row 和 Column 之外,Qt Quick 还提供了使用锚点概念来布局项目的方法。每个项目都可以被认为有一组 7 条不可见的“锚线”:左、水平中心、右、顶部、垂直中心、基线(默认与顶部相同)和底部。Qt Quick 锚定系统允许定义不同项目的锚线之间的关系。例如:Rectangle { id: rect1; ... }Rectangle { id: rect2; anchors.left: rect1.right; ... }rect2 的左边缘绑定到原创 2021-12-18 15:30:42 · 2031 阅读 · 0 评论 -
用 C++ 编写 QML 扩展
Qt QML 模块提供了一组 API,用于通过 C++ 扩展扩展 QML。可以编写扩展来添加QML 类型、扩展现有的 Qt 类型或调用无法从普通 QML 代码访问的 C/C++ 函数。在本教程中,将展示如何使用 Qt Quick 模块中的 C++ 类来扩展 QML。最终结果将是一个简单的饼图显示,由多个自定义 QML 类型通过 QML 功能(如绑定和信号)连接在一起实现,并通过插件提供给 QML 运行时。一、创建新类型扩展 QML 时的一个常见任务是提供一种新的 QML 类型,该类型支持某些..原创 2021-12-18 12:37:31 · 2022 阅读 · 1 评论 -
使用上下文属性将 C++ 对象嵌入到 QML 中
将 QML 对象加载到 C++ 应用程序中时,直接嵌入一些可在 QML 代码中使用的 C++ 数据会很有用。 例如,这使得在嵌入对象上调用 C++ 方法或使用 C++ 对象实例作为 QML 视图的数据模型成为可能。QQmlContext 类使将 C++ 数据注入 QML 对象的能力成为可能。此类向 QML 对象的上下文公开数据,以便可以直接从 QML 代码范围内引用数据。一、设置简单的上下文属性例如,这里有一个 QML 项,它引用了当前作用域中不存在的 currentDateTime 值:原创 2021-12-14 13:37:16 · 1982 阅读 · 0 评论 -
将 C++ 类型的属性暴露给 QML
可以使用 C++ 代码中定义的功能轻松扩展 QML。由于 QML 引擎与 Qt 元对象系统的紧密集成,QObject 派生类公开的任何功能都可以从 QML 代码访问。这使得 C++ 数据和函数可以直接从 QML 访问,通常几乎不需要修改。QML 引擎能够通过元对象系统反射 QObject 实例。这意味着任何 QML 代码都可以访问 QObject 派生类的实例的以下成员:属性 方法(前提是它们是 public slots 或用 Q_INVOKABLE 标记) 信号(此外,如果枚举是用 Q_EN原创 2021-12-14 00:08:30 · 1776 阅读 · 0 评论 -
QML 信号和处理程序事件系统
QML 具有信号和处理程序机制。当发出信号时,会调用相应的信号处理程序。一、使用信号处理程序接收信号要在为特定对象发出特定信号时接收通知,对象定义应声明一个名为 on<Signal> 的信号处理程序,其中 <Signal> 是信号的名称,首字母大写。信号处理程序应包含在调用信号处理程序时要执行的 JavaScript 代码。例如,来自 Qt Quick Controls 模块的 Button 类型有一个 clicked 信号,只要单击按钮就会发出该信号。在这种情况下,用于原创 2021-12-12 16:03:48 · 1022 阅读 · 0 评论 -
通过 QML 文档定义对象类型
QML 的核心特性之一是它使 QML 对象类型能够通过 QML 文档以轻量级的方式轻松定义,以便在您的应用程序中重复使用。一、使用 QML 文件定义对象类型1.1、命名自定义 QML 对象类型要创建对象类型,应将 QML 文档放入名为 <TypeName>.qml 的文本文件中,其中 <TypeName> 是所需的类型名称。类型名称有以下要求:必须由字母数字字符或下划线组成。 必须以大写字母开头。该文档随后会被引擎自动识别为 QML 类型的定义。此外,在解析 QM原创 2021-12-11 19:22:50 · 1216 阅读 · 0 评论 -
从 JavaScript 创建动态 QML 对象
一、动态创建对象有两种方法可以从 JavaScript 动态创建对象:调用 Qt.createComponent() 动态创建 Component 对象 使用 Qt.createQmlObject() 从 QML 字符串创建对象虽然动态创建的对象可以与其他对象一样使用,但它们在 QML 中没有 id。1.1、动态创建组件可以调用它的 createObject() 方法来创建该组件的一个实例。这个函数可以接受两个参数:第一个是新对象的父对象。父对象可以是图形对象(即 Item 类型)或原创 2021-12-11 18:39:59 · 1188 阅读 · 0 评论 -
从 C++ 定义 QML 类型
使用 C++ 代码扩展 QML 时,可以使用 QML 类型系统注册 C++ 类,使 C++类能够用作 QML 代码中的数据类型。虽然任何 QObject 派生类的属性、方法和信号都可以从 QML 访问,但只有注册的的类才能用作 QML 的数据类型。一、使用 QML 类型系统注册 C++ 类型QObject 派生类可以在 QML 类型系统中注册。QML引擎允许注册可实例化类型和不可实例化类型:注册可实例化类型使 C++ 类可以用作 QML 对象类型的定义,从而允许在 QML 代码的对象声明中使原创 2021-11-30 12:40:42 · 3424 阅读 · 0 评论 -
QML和C++之间的数据类型转换
在 QML 和 C++ 之间交换数据值时,QML 引擎会将它们转换为适合在 QML 或 C++ 中使用的正确数据类型。 这要求交换的数据属于引擎可识别的类型。QML 引擎为大量 Qt C++ 数据类型提供内置支持。 此外,自定义 C++ 类型可以在 QML 类型系统中注册,以使它们可用于引擎。一、数据所有权当数据从 C++ 传输到 QML 时,数据的所有权始终属于 C++。唯一的例外是当从显式 C++ 方法调用返回 QObject 时:在这种情况下,QML 引擎假定对象的所有权,除非调用了QQm原创 2021-11-15 13:32:58 · 5612 阅读 · 0 评论 -
QML属性绑定
可以为对象的属性分配一个静态值,该值在明确分配新值之前保持不变。 然而,为了充分利用 QML 及其对动态对象行为的内置支持,大多数 QML 对象使用属性绑定。属性绑定是 QML 的一个核心特性,它允许开发人员指定不同对象属性之间的关系。 当属性的依赖关系值发生变化时,该属性会根据指定的关系自动更新。在幕后,QML 引擎监视属性的依赖关系(即绑定表达式中的变量)。 当检测到更改时,QML 引擎会重新评估绑定表达式并将新结果应用于属性。一、概述要创建属性绑定,需要为属性分配一个 JavaScri原创 2021-11-14 18:38:39 · 1131 阅读 · 0 评论 -
QML 对象类型
QML 对象类型是可以实例化 QML 对象的类型。在语法方面,QML 对象类型是一种可用于通过指定类型名称后跟一组包含该对象属性的花括号来声明对象的类型。例如,Rectangle 是一个 QML 对象类型:它可以用来创建 Rectangle 类型的对象。自定义 QML 对象类型可以通过创建定义类型的 .qml 文件来定义,或者通过从 C++ 定义 QML 类型并将类型注册到 QML 引擎。请注意,在这两种情况下,类型名称都必须以大写字母开头,才能在 QML 文件中声明为 QML 对象类型。一、.原创 2021-11-14 17:13:59 · 911 阅读 · 0 评论 -
QML 基本类型
QML 支持许多基本类型。基本类型是指一个简单值的类型,例如 int 或 string。 这与 QML 对象类型形成对比,后者指的是具有属性、信号、方法等的对象。 与对象类型不同,基本类型不能用于声明 QML 对象:例如,无法声明 int{} 对象或 size{} 对象。基本类型可以用来指:单个值(例如 int 指单个数字,var 可以指单个项目列表) 包含一组简单的属性值对的值(例如,大小是指具有宽度和高度属性的值)当一个变量或属性持有一个基本类型并将其分配给另一个变量或属性时,就会生成该原创 2021-11-14 15:46:14 · 1478 阅读 · 0 评论 -
QML对象属性
每个 QML 对象类型都有一组已定义的属性。对象类型的每个实例都是使用为该对象类型定义的属性集创建的。一、id 属性每个 QML 对象类型都只有一个 id 属性。 该属性由语言本身提供,不能被任何 QML 对象类型重新定义或覆盖。id 可用于其他对象识别和引用该对象。id 必须以小写字母或下划线开头,并且不能包含字母、数字和下划线以外的字符。一旦创建了对象实例,其 id 属性的值就无法更改。二、自定义属性property 是QML自定义属性修饰符。2.1、定义属性通过注册原创 2021-10-24 15:01:16 · 2102 阅读 · 0 评论 -
Qt Quick 中的视觉父级
一、视觉父级使用 Qt Quick 创建视觉场景时,理解视觉父级的概念很重要。Qt Quick 中的视觉父级概念与 QObject 父级层次结构中的对象父级概念是分开的,但与之相关。所有 QML 对象都有一个父对象,它由声明对象的对象层次结构决定。使用 QtQuick 模块时,Item 类型是该模块提供的所有可视项的基本类型,它提供了附加可视父项的概念,由项的 parent 属性定义。每个项目都有一个视觉父项;如果项目的parent 属性值为 null,则该项目将不会在场景中呈现。出于内存管理.原创 2021-10-23 21:18:43 · 323 阅读 · 0 评论 -
QML语法基础
QML 是一种多范式语言,可以根据对象的属性以及它们如何关联和响应其他对象的变化来定义对象。 与纯粹的命令式代码相比,属性和行为的变化是通过一系列逐步处理的语句来表达的,QML 的声明式语法将属性和行为的变化直接集成到单个对象的定义中。 在需要复杂的自定义应用程序行为的情况下,这些属性定义可以包含命令式代码。QML 源代码一般是由引擎通过 QML 文档加载的,QML 文档是 QML 代码的独立文档。 这些可用于定义 QML 对象类型,然后可以在整个应用程序中重复使用。 请注意,类型名称必须以大写字母开头原创 2021-10-23 20:53:26 · 406 阅读 · 0 评论 -
在 QML 中导入 JavaScript 资源
JavaScript 资源可能由 QML 文档和其他 JavaScript 资源导入。JavaScript 资源可以通过相对或绝对 URL 导入。在相对 URL 的情况下,该位置相对于包含导入的 QML 文档或 JavaScript 资源的位置进行解析。 如果脚本文件不可访问,则会发生错误。 如果需要从网络资源中获取 JavaScript,则组件的状态将设置为“Loading”,直到脚本下载完毕。JavaScript 资源还可以导入 QML 模块和其他 JavaScript 资源。 JavaScript原创 2021-10-23 18:38:14 · 862 阅读 · 0 评论 -
在 QML 中定义 JavaScript 资源
QML 应用程序的程序逻辑可以在 JavaScript 中定义。JavaScript 代码可以在 QML 文档中内嵌定义,也可以分成 JavaScript 文件(在 QML 中称为 JavaScript 资源)。导入 JavaScript 文件时的默认行为是为每个 QML 组件实例提供一个唯一的、独立的副本。如果 JavaScript 文件没有使用 .import 语句导入任何资源或模块,则其代码将在与 QML 组件实例相同的范围内运行,因此JavaScript 文件可以访问和操作在该 QML 组件原创 2021-10-23 17:58:43 · 346 阅读 · 0 评论 -
QML:鼠标与各顶点的距离
import QtQuick 2.4import QtQuick.Window 2.2import QtQuick.Controls 1.2import QtQuick.Controls.Styles 1.2import QtQuick.Layouts 1.1Window{ id:root visible: true width: 600 height: 600 RowLayout { id: layout a.原创 2020-09-27 13:29:58 · 485 阅读 · 0 评论 -
QML:动态打开一个窗口
效果:点击按钮载入一个qml文件(一个窗口)MyButton{ text:"动画01" onBtnclicked://信号首字母大写 { var component = Qt.createComponent("Animation01.qml"); var win = component.createObject(); win.closing.connect(function() { console.log('窗口关闭了') .原创 2020-07-18 00:18:39 · 1928 阅读 · 0 评论 -
QML元素的clip属性
设置clip:true后当元素的子项超出父项范围后会自动裁剪如一个正常的对话框如下设置clip:ture后拖动缩小效果如下设置clip:false效果如下可见子项穿透了父项需要注意的是qml元素默认是clip:false的...原创 2019-12-11 12:38:08 · 5432 阅读 · 0 评论