在 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"
}
注意事項
-
內存管理:動態創建的對象(如?
createQmlObject
)需手動調用?destroy()
?釋放。 -
作用域問題:
Qt.binding
?中的函數需能訪問當前作用域變量。 -
版本兼容性:部分函數在 Qt5 和 Qt6 中行為不同(如?
Qt.application
?的細節)。 -
性能優化:避免頻繁調用?
createQmlObject
,優先使用靜態組件。