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

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

相关文章:

  • 一个Nuxt3 SSR服务端渲染简洁好用的开源个人博客系统 交互设计体验简单 腾讯markdown编辑器 支持drawio画图
  • 杨氏矩阵、字符串旋转、交换奇偶位,offsetof宏
  • 出差像是旅游?
  • Vue3具名插槽用法全解——从零到一的详细指南
  • 树莓派系统中设置固定 IP
  • SMTP发送邮件
  • 聊聊Spring AI Alibaba的FeiShuDocumentReader
  • Gitlab runner 安装和注册
  • Sentinel源码—6.熔断降级和数据统计的实现二
  • 【数据结构入门训练DAY-18】信息学奥赛一本通T1331-后缀表达式的值
  • React 打包
  • Python数据可视化领域的卓越工具:深入剖析Seaborn、Plotly与Pyecharts
  • 使用LSTM动态调整SIMPLE算法松弛因子的CFD仿真训练程序
  • B+树删除和测试
  • seate TCC模式案例
  • vue3 toRefs 与 toRef的使用
  • SpringCloud概述和环境搭建
  • Vue3 响应式原理: Proxy 数据劫持详解
  • 命令行参数·环境变量·进程地址空间(linux+C/C++)
  • 【Rust 精进之路之第14篇-结构体 Struct】定义、实例化与方法:封装数据与行为
  • 女子拿蘸料时触电受伤,海底捞回应
  • 87岁老人花3万多做“血液净化”延年益寿?医院“张主任”:我那是善意的欺骗
  • 一周观展|上海,一系列特展大展渐次呈现
  • 跑马,一场对机器人的长测试
  • “中国电三之都”江苏丰县成功举办第十五届电动车展览会
  • 四川省委统战部副部长(正厅级)张荣履新峨眉电影集团“一把手”