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.0
        Rectangle { 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,优先使用静态组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byxdaz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值