当前位置: 首页 > backend >正文

QML--全局对象Qt

在 QML 中,Qt 是一个内置的全局对象,提供了许多核心功能、工具函数、环境信息和类型构造方法。以下是 Qt 全局对象的详细分类和常见用途:

1. 工具函数

1.1 格式化与转换
  • Qt.formatDate(date, format) / Qt.formatTime(date, format)
    格式化日期或时间(如 "yyyy-MM-dd")。

  • Qt.formatDateTime(datetime, format)
    格式化日期时间(如 "hh:mm:ss.zzz")。

  • Qt.resolvedUrl(url)
    将相对路径转换为绝对路径(基于当前 QML 文件位置)。

1.2 动态对象创建
  • Qt.createQmlObject(qmlCode, parent, filepath)
    动态从字符串创建 QML 对象。

  • Qt.createComponent(url)
    从文件路径创建组件(如加载外部 QML 文件)。

1.3 绑定与逻辑
  • Qt.binding(function)
    动态创建属性绑定(替代静态绑定)。

  • Qt.callLater(function)
    延迟执行函数,避免重复调用(类似防抖)。

2. 环境信息

2.1 平台与系统
  • Qt.platform.os
    返回当前操作系统(如 "windows""linux""macos")。

  • Qt.application
    提供应用信息(如 Qt.application.state 表示应用状态)。

2.2 输入与交互
  • Qt.inputMethod
    控制虚拟键盘(如 Qt.inputMethod.show() 或 hide())。

  • Qt.styleHints
    获取系统交互风格(如动画速度、触摸优化)。

3. 类型构造

3.1 基本类型
  • Qt.point(x, y)
    构造点对象(如 Qt.point(10, 20))。

  • Qt.rect(x, y, width, height)
    构造矩形对象(如 Qt.rect(0, 0, 100, 200))。

  • Qt.size(width, height)
    构造尺寸对象(如 Qt.size(200, 300))。

3.2 颜色与图形
  • Qt.rgba(r, g, b, a)
    构造 RGBA 颜色(值范围 0.0–1.0)。

  • Qt.hsla(h, s, l, a)
    构造 HSLA 颜色(色相 0–360,其他 0.0–1.0)。

  • Qt.vector2d(x, y)
    构造二维向量(用于动画或图形计算)。

4. 调试与工具

4.1 调试支持
  • Qt.qmlDebug()
    返回是否启用了 QML 调试模式。

  • Qt.log() / Qt.debug()
    输出调试信息(等同于 console.log)。

4.2 动态加载
  • Qt.include(url)
    动态加载并执行 JavaScript 文件(类似 import,但运行时加载)。

5. 系统交互

5.1 文件与网络
  • Qt.openUrlExternally(url)
    用系统默认程序打开 URL(如浏览器、邮件客户端)。

  • Qt.quit()
    退出应用程序(需谨慎使用)。

5.2 本地化
  • Qt.locale()
    获取本地化信息(如语言、数字格式)。

示例代码

qml

// 动态创建红色矩形
Component.onCompleted: {const obj = Qt.createQmlObject(`import QtQuick 2.0Rectangle { color: "red"; width: 50; height: 50 }`, parent);
}// 绑定属性
property int value: 10
Text {text: Qt.binding(() => value * 2) // 动态更新
}// 打开外部链接
MouseArea {onClicked: Qt.openUrlExternally("https://doc.qt.io")
}// 平台适配
Rectangle {color: Qt.platform.os === "windows" ? "blue" : "green"
}

注意事项

  1. 内存管理:动态创建的对象(如 createQmlObject)需手动调用 destroy() 释放。

  2. 作用域问题Qt.binding 中的函数需能访问当前作用域变量。

  3. 版本兼容性:部分函数在 Qt5 和 Qt6 中行为不同(如 Qt.application 的细节)。

  4. 性能优化:避免频繁调用 createQmlObject,优先使用静态组件。

http://www.xdnf.cn/news/721.html

相关文章:

  • 1.Vue自动化工具安装(Vue-cli)
  • 自定义请求头导致跨域的解决办法
  • C++学习:六个月从基础到就业——内存管理:RAII原则
  • 键入网址到网页显示,期间发生了什么?
  • Arduino示例代码讲解:Project 08 - Digital Hourglass 数字沙漏
  • DAY 50 leetcode 1047--栈和队列.删除字符串中的所有相邻重复项
  • Spring MVC 如何体现 Model-View-Controller 各自的职责?它们之间是如何协作的?
  • 【Linux】进程状态
  • 【仓颉 + 鸿蒙 + AI Agent】CangjieMagic框架(17):PlanReactExecutor
  • OpenCV 自适应背景更新 cv2.accumulateWeighted
  • 【OC】AVPlayerLayer的学习
  • PG psql --single-transaction 参数功能
  • 秘密任务 3.0:如何通过 JWT 认证确保 WebSockets 安全
  • c++基础·左值右值
  • HBase安装与基本操作指南
  • 安卓单机斗地主,具备休闲挑战等多模式
  • paddleocr出现: [WinError 127] 找不到指定的程序解决办法
  • 一招解决所以Maven找不到依赖包的问题
  • 即插即用模块(1) -MAFM特征融合
  • javascript day4
  • LicheeRV Nano 与Ubuntu官方risc-v 镜像混合
  • 12【生命周期·入门】为何需要与显式标注 (`‘a`):让编译器读懂引用的“有效期”
  • Oracle--SQL基本语法
  • lmm-r1开源程序是扩展 OpenRLHF 以支持 LMM RL 训练,用于在多模态任务上重现 DeepSeek-R1
  • Eureka搭建
  • BeautifulSoup 库的使用——python爬虫
  • 算法—合并排序—js(场景:大数据且需稳定性)
  • 23种设计模式-结构型模式之装饰器模式(Java版本)
  • C#进阶学习(八)常见的泛型数据结构类(3)SortedDictionary<TKey, TValue>与SortedList<TKey, TValue>
  • 大语言模型推理能力的强化学习现状理解GRPO与近期推理模型研究的新见解