在 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"
}
注意事项
-
内存管理:动态创建的对象(如
createQmlObject
)需手动调用destroy()
释放。 -
作用域问题:
Qt.binding
中的函数需能访问当前作用域变量。 -
版本兼容性:部分函数在 Qt5 和 Qt6 中行为不同(如
Qt.application
的细节)。 -
性能优化:避免频繁调用
createQmlObject
,优先使用静态组件。