Qt QML Type
提供了一个包含 Qt 中有用枚举和函数的全局对象。更多内容...
| Import Statement: | import QtQml |
属性
- application : Application
- inputMethod : InputMethod
- platform : var
- styleHints : QtObject
- uiLanguage : string
方法
- string QT_TRANSLATE_NOOP(string context, string sourceText, string disambiguation)
- string QT_TRID_NOOP(string id)
- string QT_TR_NOOP(string sourceText, string disambiguation)
- color alpha(color baseColor, real value)
- ArrayBuffer atob(ArrayBuffer data)
(since 6.11) - var atob(var data)
(since 6.11) - var binding(var function)
- ArrayBuffer btoa(ArrayBuffer data)
(since 6.11) - var btoa(var data)
(since 6.11) - void callLater(function)
- void callLater(function, argument1, argument2, ...)
- color color(string name)
- color colorEqual(color lhs, string rhs)
- Component createComponent(url url, enumeration mode, QtObject parent)
- Component createComponent(string moduleUri, string typeName, enumeration mode, QtObject parent)
(since 6.5) - QtObject createQmlObject(string qml, QtObject parent, url url)
- color darker(color baseColor, real factor)
- real enumStringToValue(enumType, keyName)
- string enumValueToString(enumType, keyValue)
- list<string> enumValueToStrings(enumType, keyValue)
- string escapeHtml(string data)
(since 6.12) - void exit(int retCode)
- font font(var fontSpecifier)
- list<string> fontFamilies()
- string formatDate(datetime date, variant format, variant localeFormatOption)
- string formatDateTime(datetime dateTime, variant format, variant localeFormatOption)
- string formatTime(datetime time, variant format, variant localeFormatOption)
- void gc()
- color hsla(real hue, real saturation, real lightness, real alpha)
- color hsva(real hue, real saturation, real value, real alpha)
- bool isQtObject(object)
- color lighter(color baseColor, real factor)
- locale locale(name)
- string md5(data)
- matrix4x4 matrix4x4()
- matrix4x4 matrix4x4(var values)
- matrix4x4 matrix4x4(real m11, real m12, real m13, real m14, real m21, real m22, real m23, real m24, real m31, real m32, real m33, real m34, real m41, real m42, real m43, real m44)
- bool openUrlExternally(url target)
- point point(real x, real y)
- string qsTr(string sourceText, string disambiguation, int n)
- string qsTrId(string id, int n)
- string qsTranslate(string context, string sourceText, string disambiguation, int n)
- quaternion quaternion(real scalar, real x, real y, real z)
- void quit()
- rect rect(real x, real y, real width, real height)
- url resolvedUrl(url url)
- url resolvedUrl(url url, object context)
- color rgba(real red, real green, real blue, real alpha)
- size size(real width, real height)
- color tint(color baseColor, color tintColor)
- url url(url url)
- vector2d vector2d(real x, real y)
- vector3d vector3d(real x, real y, real z)
- vector4d vector4d(real x, real y, real z, real w)
详细说明
Qt 是一种提供实用函数、属性及枚举的单例类型。以下是一个展示如何使用该类型的示例:
import QtQuick 2.0
Text {
color: Qt.rgba(1, 0, 0, 1)
text: Qt.md5("hello, world")
}枚举
该 Qt 对象包含 `Qt Namespace` 中可用的枚举。例如,您可以通过 `Qt.LeftButton ` 和 `Qt.RightButton` 访问 `Qt::LeftButton ` 和 `Qt::RightButton ` 这两个枚举值。
类型
Qt 对象还包含用于创建特定数据类型对象的辅助函数。当设置项目的属性时,如果该属性属于以下类型之一,此功能尤为有用:
如果已导入QtQuick 模块,客户端还可以使用以下用于创建特定数据类型对象的辅助函数:
color- useQt.rgba(),Qt.hsla(),Qt.darker(),Qt.lighter() 或Qt.tint()font- 使用Qt.font()vector2d- 使用Qt.vector2d()vector3d- 使用Qt.vector3d()vector4d- 使用Qt.vector4d()quaternion- 使用Qt.quaternion()matrix4x4- 使用Qt.matrix4x4()
日期/时间格式化器
该 Qt 对象包含若干用于格式化QDateTime 、QDate 和QTime 值的函数。
- string Qt.formatDateTime(datetime date, variant format)
- string Qt.formatDate(datetime date, variant format)
- string Qt.formatTime(datetime date, variant format)
格式规范详见Qt.formatDateTime 。
动态对象创建
全局对象上的以下函数允许您从文件或字符串中动态创建 QML 项。有关其使用概述,请参阅《通过 JavaScript 动态创建 QML 对象》。
其他函数
Qt 对象上还提供了以下函数。
- Qt.quit()
- Qt.md5(字符串)
- string Qt.btoa(string)
- string Qt.atob(string)
- object Qt.binding(function)
- object Qt.locale()
- string Qt.resolvedUrl(string)
- Qt.openUrlExternally(字符串)
- list<string> Qt.fontFamilies()
属性文档
application : Application
application 对象提供了对许多 QML 组件共用的全局应用程序状态属性的访问。
它与Application 单例对象相同。
以下示例使用 `application ` 对象来指示应用程序当前是否处于活动状态:
import QtQuick
Rectangle {
width: 300; height: 55
color: Qt.application.active ? "white" : "lightgray"
Text {
text: "Application " + (Qt.application.active ? "active" : "inactive")
opacity: Qt.application.active ? 1.0 : 0.5
anchors.centerIn: parent
}
}注意:若在 未使用 `QGuiApplication` 的情况下使用 QML,以下属性将被定义为未定义:
- application.active
- application.state
- application.layoutDirection
- application.font
inputMethod : InputMethod
它与InputMethod 单例对象相同。
inputMethod 对象允许访问应用程序的QInputMethod 对象及其所有属性和槽。更多详细信息请参阅QInputMethod 文档。
platform : var
platform 对象提供了有关底层平台的信息。
其属性包括:
platform.os | 此只读属性包含操作系统的名称。 可能的取值为:
注意: 在 macOS 上,该属性的 值为“osx”,无论 Apple 的命名约定如何。在 Qt 7 中,返回值将更新为“macos”。 |
platform.pluginName | 这是QGuiApplication 实例上设置的平台名称,由QGuiApplication::platformName()返回 |
styleHints : QtObject
styleHints 对象提供特定于平台的样式提示和设置。有关更多详细信息,请参阅QStyleHints 文档。
您应通过 `Application::styleHints ` 访问 `StyleHints`,因为这能为诸如 Qt Quick Compiler。
注意: styleHints 对象 仅在使用Qt Quick 模块时可用。
uiLanguage : string
uiLanguage 存储用于用户界面字符串翻译的语言名称。在 C++ 中,它以QJSEngine::uiLanguage 属性形式提供。
您可以自由设置该值并在绑定中使用它。建议在应用程序中安装翻译程序后再进行设置。按惯例,空字符串表示不打算对源代码中使用的语言进行翻译。
如果您正在使用 `QQmlApplicationEngine ` 且其值发生变化,系统将调用 `QQmlEngine::retranslate()` 方法。
方法文档
string QT_TRANSLATE_NOOP(string context, string sourceText, string disambiguation)
将sourceText 标记为在给定的context 中进行动态翻译;即,存储的sourceText 将保持不变。
如果在同一翻译上下文中,同一sourceText 在不同角色中被使用,则可为disambiguation 传递一个额外的标识字符串。
返回sourceText 。
QT_TRANSLATE_NOOP 与动态翻译函数qsTr() 和qsTranslate() 配合使用。它将字符串标记为需要翻译(以便通过lupdate 进行识别),但将实际的翻译工作交由动态函数处理。
示例:
Item {
property string greeting: QT_TRANSLATE_NOOP("CustomContext", "hello")
Text { text: qsTranslate("CustomContext", greeting) }
}另请参阅 《Qt 中的国际化》。
string QT_TRID_NOOP(string id)
将id 标记为动态翻译。
返回id 。
QT_TRID_NOOP 需与动态翻译函数qsTrId() 配合使用。它将字符串标记为需要翻译(因此可通过lupdate 识别),但将实际翻译工作交由qsTrId() 处理。
示例:
string QT_TR_NOOP(string sourceText, string disambiguation)
标记sourceText 以进行动态翻译;即,存储的sourceText 不会被修改。
如果在同一翻译上下文中,同一sourceText 在不同角色中被使用,则可以为disambiguation 传递一个额外的标识字符串。
返回sourceText 。
QT_TR_NOOP 与动态翻译函数qsTr() 和qsTranslate() 配合使用。它将字符串标记为需要翻译(以便通过lupdate 进行识别),但将实际的翻译工作交由动态函数处理。
示例:
另请参阅 《使用 Qt 进行国际化》。
color alpha(color baseColor, real value)
返回baseColor ,其透明度(alpha)值为value 。
value 是一个实数,取值范围从 0(完全透明)到 1(完全不透明)。
注意:建议 使用带类型的Color::transparent
[since 6.11] ArrayBuffer atob(ArrayBuffer data)
ASCII 转二进制——该函数对 base64 编码的data 进行解码并返回结果。
您可以将任何数组样式的对象作为 `data` 传入,该函数将尝试将其转换为字节数组。特别是,此功能适用于数字列表和单字符字符串列表。不过,最有效的方法是传入 `QByteArray ` 或 JavaScript `ArrayBuffer` 对象。
如果转换失败,且发现 `data ` 并非预期格式,则会抛出 `Invalid Character ` 异常,并返回一个空数组。
该方法在 Qt 6.11 中引入。
[since 6.11] var atob(var data)
ASCII 转二进制 — 此函数对 Base64 编码的data 进行解码并返回结果。
这是一个重载函数。
该方法在 Qt 6.11 中引入。
var binding(var function)
返回一个表示属性绑定的 JavaScript 对象,其中包含一个用于评估该绑定的function 。
该函数主要有两种使用场景:首先,用于从 JavaScript 代码中以命令式方式应用属性绑定:
Item {
property bool someCondition: true
property int edgePosition
Component.onCompleted: {
if (someCondition == true) {
// bind to the result of the binding expression passed to Qt.binding()
edgePosition = Qt.binding(function() { return x + width })
}
}
}其次,在初始化动态构造对象(通过 `Component.createObject()` 或 `Loader.setSource()`)的属性值时应用属性绑定。
例如,假设存在一个 DynamicText 组件:
import QtQuick
Text {
id: textElement
width: 200
height: 200
text: "Default text"
property string dynamicText: "Dynamic text"
onTextChanged: console.log(text)
}以下代码的输出结果:
Item {
id: root
property string dynamicText: "Root text"
Component.onCompleted: {
var c = Qt.createComponent("DynamicText.qml")
var obj1 = c.createObject(root, { 'text': Qt.binding(function() { return dynamicText + ' extra text' }) })
root.dynamicText = "Modified root text"
var obj2 = c.createObject(root, { 'text': Qt.binding(function() { return this.dynamicText + ' extra text' }) })
obj2.dynamicText = "Modified dynamic text"
}
}以及:
Item {
id: root
property string dynamicText: "Root text"
Loader {
id: loaderOne
onLoaded: root.dynamicText = "Modified root text"
}
Loader {
id: loaderTwo
onLoaded: item.dynamicText = "Modified dynamic text"
}
Component.onCompleted: {
loaderOne.setSource("DynamicText.qml", { 'text': Qt.binding(function() { return dynamicText + ' extra text' }) })
loaderTwo.setSource("DynamicText.qml", { 'text': Qt.binding(function() { return this.dynamicText + ' extra text' }) })
}
}的输出结果都应为:
Root text extra text
Modified root text extra text
Dynamic text extra text
Modified dynamic text extra text该函数不能用于属性绑定声明(参见关于绑定声明和绑定赋值的文档),除非结果存储在绑定到 var 属性的数组中。
Item {
width: 50
property var storedBindings: [ Qt.binding(function() { return x + width }) ] // stored
property int a: Qt.binding(function() { return x + width }) // error!
property int b
Component.onCompleted: {
b = storedBindings[0] // causes binding assignment
}
}[since 6.11] ArrayBuffer btoa(ArrayBuffer data)
二进制转ASCII——该函数返回data 的Base64编码。
您可以将任何类似数组的对象作为 `data` 参数传入,该函数会尝试将其转换为字节数组。特别是,此功能适用于数字列表和单字符字符串列表。不过,最有效的方法是传入 `QByteArray ` 或 JavaScript `ArrayBuffer` 对象。
如果转换失败,且发现 `data ` 并非预期格式,则会抛出 `Invalid Character ` 异常,并返回一个空数组。
该方法于 Qt 6.11 中引入。
[since 6.11] var btoa(var data)
二进制转ASCII——此函数返回data 的Base64编码。
这是一个重载函数。
该方法在 Qt 6.11 中引入。
使用此函数可消除对某个函数或信号的冗余调用。
作为 Qt.callLater() 第一个参数传递的函数将在稍后被调用,即当 QML 引擎返回事件循环时。
当该函数在短时间内多次被调用,且其第一个参数均为同一函数时,该函数仅会被调用一次。
例如:
import QtQuick
Rectangle {
width: 480
height: 320
property int callsToUpdateMinimumWidth: 0
property bool optimize: true
property int currentTextModel: 0
property var columnTexts: [
["Click on either", "rectangle above", "and note how the counter", "below updates", "significantly faster using the", "regular (non-optimized)", "implementation"],
["The width", "of this column", "is", "no wider than the", "widest item"],
["Note how using Qt.callLater()", "the minimum width is", "calculated a bare-minimum", "number", "of times"]
]
Text {
x: 20; y: 280
text: "Times minimum width has been calculated: " + callsToUpdateMinimumWidth
}
Row {
y: 25; spacing: 30; anchors.horizontalCenter: parent.horizontalCenter
Rectangle {
width: 200; height: 50; color: "lightgreen"
Text { text: "Optimized behavior\nusing Qt.callLater()"; anchors.centerIn: parent }
MouseArea { anchors.fill: parent; onClicked: { optimize = true; currentTextModel++ } }
}
Rectangle {
width: 200; height: 50; color: "lightblue"
Text { text: "Regular behavior"; anchors.centerIn: parent}
MouseArea { anchors.fill: parent; onClicked: { optimize = false; currentTextModel++ } }
}
}
Column {
id: column
anchors.centerIn: parent
onChildrenChanged: optimize ? Qt.callLater(updateMinimumWidth) : updateMinimumWidth()
property int widestChild
function updateMinimumWidth() {
callsToUpdateMinimumWidth++
var w = 0;
for (var i in children) {
var child = children[i];
if (child.implicitWidth > w) {
w = child.implicitWidth;
}
}
widestChild = w;
}
Repeater {
id: repeater
model: columnTexts[currentTextModel%3]
delegate: Text {
color: "white"
text: modelData
width: column.widestChild
horizontalAlignment: Text.Center
Rectangle { anchors.fill: parent; z: -1; color: index%2 ? "gray" : "darkgray" }
}
}
}
}callLater传递给 Qt XML-ph-0000@deepl.internal() 的任何其他参数都将传递给被调用的函数。请注意,如果消除了冗余调用,则只有最后一套参数会被传递给该函数。
color color(string name)
返回与给定的name 对应的颜色(即红色或#ff0000)。如果不存在该颜色,则返回null 。
注意:建议 使用类型化的Color::fromString
color colorEqual(color lhs, string rhs)
如果 `lhs ` 和 `rhs ` 返回的颜色值相等,则返回 `true `。这两个参数可以是颜色值,也可以是字符串值。如果提供的是字符串值,则该值必须能够转换为颜色,具体请参见 `color ` 值类型的说明。
注意:建议 使用带类型标记的Color::equal
Component createComponent(url url, enumeration mode, QtObject parent)
返回一个使用指定路径url 处的 QML 文件创建的 `Component ` 对象;若传入的是空字符串,则返回 `null `。
返回的组件的Component::status 属性指示该组件是否已成功创建。如果状态为Component.Error ,请参阅Component::errorString() 以获取错误描述。
如果可选参数mode 设置为Component.Asynchronous ,则组件将在后台线程中加载。加载期间,Component::status 属性将显示为Component.Loading 。如果组件加载成功,状态将变为Component.Ready ;如果加载失败,则变为Component.Error 。若省略此参数,其默认值为Component.PreferSynchronous 。
如果将 `mode ` 设置为 `Component.PreferSynchronous`,Qt 将尝试同步加载该组件,但在必要时可能会转为异步加载。可能导致异步加载的情况包括但不限于以下情形:
- URL 指向网络资源
- 该组件的创建是由于另一个正在异步加载的组件所致
如果提供了可选的parent 参数,它应指向将成为所创建Component 对象父对象的对象。如果未传入模式,则可将其作为第二个参数。
调用返回的组件上的Component.createObject() 方法,以创建该组件的对象实例。
例如:
import QtQuick
Item {
id: container
width: 300; height: 300
function loadButton() {
var component = Qt.createComponent("Button.qml");
if (component.status == Component.Ready) {
var button = component.createObject(container);
button.color = "red";
}
}
Component.onCompleted: loadButton()
}有关此函数的更多信息,请参阅《从 JavaScript 动态创建 QML 对象》。
若要从任意的 QML 字符串(而非文件)创建 QML 对象,请使用 `Qt.createQmlObject()`。
[since 6.5] Component createComponent(string moduleUri, string typeName, enumeration mode, QtObject parent)
返回一个为由 `moduleUri ` 和 `typeName` 指定的类型创建的 `Component ` 对象。
import QtQml
QtObject {
id: root
property Component myComponent: Qt.createComponent("QtQuick", "Rectangle", Component.Asynchronous, root)
}此重载的行为与基于 `url ` 的版本基本一致,但可用于实例化没有 URL 的类型(例如通过 `QML_ELEMENT` 注册的 C++ 类型)。
注意:在 某些情况下,传递Component.Asynchronous 不会产生任何效果:
- 该类型是用 C++ 实现的
- 该类型是内联组件。
如果提供了可选的parent 参数,它应指向将成为所创建Component 对象父对象的对象。如果未传入模式,则该参数可作为第二个参数。
这是一个重载函数。
该方法于 Qt 6.5 中引入。
QtObject createQmlObject(string qml, QtObject parent, url url)
将给定的qml 字符串编译为一个组件,然后返回一个基于该组件创建的新对象。该新对象将具有指定的parent 。如果在创建组件或对象时发生错误,则返回null 。
如果指定了url ,它将被用作该组件的 URL。这对于错误报告非常有用。
警告:新组件 将覆盖任何具有相同 URL 的现有组件。请勿传入现有组件的 URL。特别是,若传入包含该组件的 QML 文件的 URL,将导致新组件无法访问其所在的父级组件。
示例(其中parentItem 是现有 QML 项的 ID):
const newObject = Qt.createQmlObject(`
import QtQuick
Rectangle {
color: "red"
width: 20
height: 20
}
`,
parentItem,
"myDynamicSnippet"
);发生错误时,会抛出一个QQmlError 对象。该对象有一个额外属性qmlErrors ,它是一个包含所遇错误的数组。该数组中的每个对象都包含以下成员:lineNumber 、columnNumber 、fileName 和message 。 例如,如果上述代码片段中将 color 拼写为 'colro',则该数组将包含如下对象:{ "lineNumber" : 1, "columnNumber" : 32, "fileName" : "dynamicSnippet1", "message" : "无法将值赋给不存在的属性 'colro'""}。
注意:此 函数会立即返回,因此如果qml 字符串加载了新组件(即尚未加载的外部QML文件),则可能无法正常工作。如果出现这种情况,请考虑改用Qt.createComponent()。
警告: 由于该函数 每次调用时都必须编译传入的 QML 字符串,因此运行速度极其缓慢。此外,在通过编程方式构造 QML 代码时,极易生成无效的 QML 代码。 与通过字符串操作生成新组件相比,将 QML 组件保存在单独的文件中,并通过添加属性和方法来定制其行为要好得多。
有关使用此函数的更多信息,请参阅《从 JavaScript 动态创建 QML 对象》。
color darker(color baseColor, real factor)
返回一种比baseColor 更深的颜色,深浅程度由给定的factor 决定。
如果因子大于 1.0,则该函数返回更深的颜色。 将因子设置为 3.0 将返回亮度为原色三分之一的颜色。如果因子小于 1.0,返回的颜色会更浅,但我们建议为此目的使用 Qt.lighter() 函数。如果因子为 0 或负数,返回值未定义。
该函数将当前的 RGB 颜色转换为 HSV,将 (V) 分量除以 factor,然后将颜色转换回 RGB。
如果未提供factor 参数,则返回比baseColor 暗 50% 的颜色(因子为 2.0)。
注意:建议 使用类型化的Color::darker
real enumStringToValue(enumType, keyName)
返回枚举enumType 中键keyName 的数值。如果找不到该枚举,则抛出TypeError 异常。如果该键不是该枚举的条目,则抛出ReferenceError 异常。
string enumValueToString(enumType, keyValue)
返回枚举enumType 中值为keyValue 的键的字符串表示形式。如果找不到该枚举,将抛出TypeError 异常。如果该值与枚举中的任何键都不匹配,将抛出ReferenceError 异常。
注意:如果 多个键与keyValue 的值匹配,则返回哪个匹配键未作规定。在这种情况下,请使用enumValueToStrings 。
list<string> enumValueToStrings(enumType, keyValue)
返回一个列表,其中包含枚举enumType 中所有值为keyValue 的键的字符串表示形式。如果找不到该枚举,则抛出TypeError 异常。如果该枚举中没有键的值为keyValue ,则抛出ReferenceError 异常。
[since 6.12] string escapeHtml(string data)
返回经过 HTML 特殊字符转义处理的data 。
该函数将纯文本字符串data 转换为 HTML 字符串,其中 HTML 元字符< 、> 、& 和" 均被替换为 HTML 实体。
示例:
var plain = "<script>alert('XSS')</script>";
var escaped = Qt.escapeHtml(plain);
// escaped is now "<script>alert('XSS')</script>"该方法在 Qt 6.12 中引入。
另请参阅 ` QString::toHtmlEscaped()`。
void exit(int retCode)
此函数会触发QQmlEngine::exit(int)信号。在qml工具中,这会导致启动器应用程序以指定的返回码(retCode )退出。若要在调用此方法时以指定的返回码退出事件循环,C++应用程序可将QQmlEngine::exit(int)信号连接到QCoreApplication::exit(int)槽。
另请参阅 quit()。
font font(var fontSpecifier)
返回一个具有fontSpecifier 对象中指定属性的字体,或返回最接近的匹配字体。fontSpecifier 对象应包含键值对,其中有效键为font 类型的子属性名称,值则是各子属性的有效值。无效键将被忽略。
list<string> fontFamilies()
返回应用程序可用的字体家族列表。
string formatDate(datetime date, variant format, variant localeFormatOption)
返回date 的字符串表示形式,可选地使用format 进行格式化。
date 参数可以是 JavaScript 的Date 对象、date 属性、QDate ,或QDateTime 值。format 和localeFormatOption 参数可以是Qt.formatDateTime() 中描述的任何有效格式值。
如果未指定format ,则使用默认区域设置通过Locale.ShortFormat 对date 进行格式化。
另请参阅 Locale 。
string formatDateTime(datetime dateTime, variant format, variant localeFormatOption)
返回dateTime 的字符串表示形式,可选地使用format 和localeFormatOption 进行格式化。
dateTime 参数可以是 JavaScript 的Date 对象、date 属性,以及QDate 、QTime 或QDateTime 的值。
如果未提供format ,则使用默认区域设置通过Locale.ShortFormat 对dateTime 进行格式化。否则,format 应为以下之一:
- Qt::DateFormat 枚举值之一,例如
Qt.RFC2822Date或Qt.ISODate。 - 一个指定返回字符串格式的字符串,具体如下所述。
- 一个
locale对象。
如果 `format ` 指定了一个区域设置对象,则 `dateTime ` 将使用 `QLocale::toString` 进行格式化。在这种情况下,`localeFormatOption ` 可以存储 `QLocale::FormatType ` 类型的值,以进一步调整格式。如果未提供该参数,则使用 `Locale.ShortFormat `。
如果format 指定了格式字符串,则应使用以下表达式来指定日期:
| 表达式 | 输出 |
|---|---|
| d | 以数字形式显示日期,不带前导零(1 至 31) |
| dd | 带前导零的日期数字(01 至 31) |
| ddd | 本地化的日期名称缩写(例如“Mon”到“Sun”)。使用 QDate::shortDayName()。 |
| dddd | 本地化的完整星期名称(例如“Monday”到“Qt::Sunday ”)。使用 QDate::longDayName()。 |
| M | 月份数字(不带前导零,1-12) |
| MM | 带前导零的月份数字(01-12) |
| MMM | 本地化的月份缩写名称(例如“Jan”至“Dec”)。使用 QDate::shortMonthName()。 |
| MMMM | 本地化的月份全称(例如“January”至“December”)。使用 QDate::longMonthName() 函数。 |
| yy | 以两位数表示的年份(00-99) |
| yyyy | 以四位数字表示的年份 |
此外,还可以使用以下表达式来指定时间:
| 表达式 | 输出 |
|---|---|
| h | 不带前导零的小时(0 至 23,或 1 至 12,若显示 AM/PM) |
| hh | 带前导零的小时(00 至 23,若采用 AM/PM 显示则为 01 至 12) |
| m | 不带前导零的分钟(0 到 59) |
| mm | 带前导零的分钟(00 至 59) |
| s | 不带前导零的秒(0 到 59) |
| ss | 带前导零的秒(00 至 59) |
| z | 不带前导零的毫秒(0 至 999) |
| zzz | 带前导零的毫秒(000 至 999) |
| AP | 使用 AM/PM 显示。AP将被替换为“AM”或“PM”。 |
| ap | 使用 AM/PM 显示。ap将被替换为“am”或“pm”。 |
| t | 包含时区标识。 |
所有其他输入字符将被忽略。任何用单引号括起的字符序列将被视为文本,而非表达式。输出中,两个连续的单引号("''")将被替换为一个单引号。
例如,如果指定了以下日期/时间值:
// 21 May 2001 14:13:09
var dateTime = new Date(2001, 5, 21, 14, 13, 09)该dateTime 值可传递给Qt.formatDateTime() 、Qt.formatDate()或Qt.formatTime(),并配合下方的format 值,将产生以下结果:
| 格式 | 结果 |
|---|---|
| "dd.MM.yyyy" | 21.05.2001 |
| "ddd MMMM d yy" | 2001年5月21日 周二 |
| "hh:mm:ss.zzz" | 14:13:09.042 |
| "h:m:s ap" | 下午 2:13:9 |
另请参阅 Locale 。
string formatTime(datetime time, variant format, variant localeFormatOption)
返回time 的字符串表示形式,可选地使用format 进行格式化,并根据localeFormatOption (若已提供)进行处理。
time 参数可以是 JavaScript 的Date 对象、QTime ,或QDateTime 值。format 和localeFormatOption 参数可以是Qt.formatDateTime() 中描述的任何可能的格式值。
如果未指定format ,则time 将使用默认区域设置通过Locale.ShortFormat 进行格式化。
另请参阅 Locale 。
void gc()
运行垃圾回收器。
这相当于调用QJSEngine::collectGarbage()。
另请参阅 “垃圾回收”。
color hsla(real hue, real saturation, real lightness, real alpha)
返回一种具有指定hue 、saturation 、lightness 和alpha 分量的颜色。所有分量均应在0-1(含)的范围内。
注意:建议 使用类型化的Color::hsla
color hsva(real hue, real saturation, real value, real alpha)
返回一种具有指定hue 、saturation 、value 和alpha 分量的颜色。所有分量均应在0到1的范围内(包含0和1)。
注意:建议 使用类型化的Color::hsva
bool isQtObject(object)
如果 `object ` 是指向 Qt 或 QML 对象的有效引用,则返回 `true `;否则返回 `false `。
color lighter(color baseColor, real factor)
返回一种比baseColor 更浅的颜色,浅度由factor 参数指定。
如果因子大于 1.0,则该函数返回更浅的颜色。 将因子设置为 1.5 将返回亮度提高 50% 的颜色。如果因子小于 1.0,返回的颜色会更暗,但我们建议为此目的使用 Qt.darker() 函数。如果因子为 0 或负数,返回值未定义。
该函数将当前的 RGB 颜色转换为 HSV,将值(V)分量乘以因子,然后将颜色转换回 RGB。
如果未提供 `factor `,则返回比 `baseColor `(因子为 1.5)浅 50% 的颜色。
注意:建议 使用类型化的Color::lighter
locale locale(name)
返回一个 JavaScript 对象,该对象表示具有指定name 的区域设置,其格式为“language[_territory][.codeset][@modifier]”或“C”,其中:
language是小写、两字母的 ISO 639 语言代码,territory是两个大写字母组成的 ISO 3166 国家代码,codeset而modifier将被忽略。
如果字符串不符合区域设置格式,或者 language 不是有效的 ISO 369 代码,则改用“C”区域设置。如果 country 不存在,或者不是有效的 ISO 3166 代码,则为指定语言选择最合适的国家。
返回的对象是一个由QLocale 支持的匿名 QML 类型。
另请参阅 Locale 。
string md5(data)
返回data 的MD5哈希值的十六进制字符串。
matrix4x4 matrix4x4()
返回一个 4×4 的单位矩阵。
matrix4x4 matrix4x4(var values)
返回一个4x4的矩阵,其元素为指定的values 。values 应是一个包含16个元素的JavaScript数组。
该数组的索引与矩阵中的位置对应关系如下:
| 0 | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 |
matrix4x4 matrix4x4(real m11, real m12, real m13, real m14, real m21, real m22, real m23, real m24, real m31, real m32, real m33, real m34, real m41, real m42, real m43, real m44)
返回一个包含指定值的 4×4 矩阵。
这些参数对应于矩阵中的位置:
| m11 | m12 | m13 | m14 |
| m21 | m22 | m23 | m24 |
| m31 | m32 | m33 | m34 |
| m41 | m42 | m43 | m44 |
bool openUrlExternally(url target)
根据用户的桌面偏好设置,尝试在外部应用程序中打开指定的target 网址。若操作成功,则返回true ;否则返回false 。
如果target 是相对 URL,系统将对其进行解析。之后,该 URL 将被转发至QDesktopServices::openUrl 。
警告:返回值 true 表示应用程序已成功请求操作系统在外部应用程序中打开该 URL。但外部应用程序仍可能无法启动,或无法打开请求的 URL。此结果不会反馈给应用程序。
警告:将 不可信的 URL传递给 openUrlExternally 可能会导致意外行为。如果需要将不可信的 URL 传递给此函数,请创建一个 JavaScript URL 对象,并将其protocol 属性与允许的协议列表进行比对。您还可以根据其他属性(如host )进行进一步过滤。
point point(real x, real y)
返回一个具有指定x 和y 坐标的点。
string qsTr(string sourceText, string disambiguation, int n)
返回sourceText 的翻译版本,可选地基于disambiguation 字符串,对于包含复数形式的字符串,则使用n 中的值;否则,如果没有合适的翻译字符串,则返回sourceText 本身。
sourceText 和n 的示例:
Text { text: qsTr("hello") } // Translates the source text into the correct
// plural form and replaces %n with the value of total.
Text {
text: qsTr("%n message(s) saved", "", total)
}如果在同一翻译上下文中,同一sourceText 被用于不同的角色,可以为disambiguation 传递一个额外的标识字符串。有关详细信息和示例,请参阅《消除相同文本的歧义》。
另请参阅 qsTranslate()、使用 Qt 进行国际化 以及为翻译编写源代码。
string qsTrId(string id, int n)
返回由 `id` 标识的已翻译字符串。如果未找到匹配的字符串,则返回该标识符本身。在正常情况下不应发生这种情况。
如果n >= 0,则结果字符串中所有出现的%n 都会被替换为n 的十进制表示形式。此外,根据n 的值不同,翻译文本可能会有所变化。
示例:
Text { text: qsTrId("hello_id") }可以提供如下格式的源字符串模板:
//% <string>
Text {
//% "hello"
text: qsTrId("hello_id")
}或
/*% <string> */
Text {
/*% "hello" */
text: qsTrId("hello_id")
}要创建适合与该函数配合使用的二进制翻译(QM)文件,需向lrelease 工具传递-idbased 选项。
另请参阅 QT_TRID_NOOP() 以及Qt XML 的国际化。
string qsTranslate(string context, string sourceText, string disambiguation, int n)
返回给定context 范围内sourceText 的翻译版本,可选地基于disambiguation 字符串以及n 中的值(适用于包含复数形式的字符串);否则,若无合适的翻译字符串,则返回sourceText 本身。
如果在同一翻译context 内,不同的角色使用了相同的sourceText ,则可以为disambiguation 传递一个额外的标识字符串。
示例:
Text { text: qsTranslate("CustomContext", "hello") }当您的翻译context 与文件context 不同时,请使用此方法。
另请参阅 《使用 Qt 进行国际化》和qsTr()。
quaternion quaternion(real scalar, real x, real y, real z)
返回一个四元数,其scalar 、x 、y 和z 的值分别为指定值。
void quit()
此函数会触发QQmlEngine::quit()信号。在qml工具中,这会导致启动器应用程序退出;若要在调用此方法时退出C++应用程序,请将QQmlEngine::quit()信号连接到QCoreApplication::quit()槽。
另请参阅 exit()。
rect rect(real x, real y, real width, real height)
返回一个矩形,其左上角坐标为x 、y ,且具有指定的width 和height 。
url resolvedUrl(url url)
返回相对于调用者 URL 解析出的url 。
如果不存在调用者,或者调用者未与 QML 上下文相关联,则返回相对于 QML 引擎基准 URL 解析后的url 。如果 QML 引擎没有基准 URL,则仅返回url 。
另请参阅 url()。
url resolvedUrl(url url, object context)
返回相对于context 的 QML 上下文 URL 解析后的url 。如果context 未与任何 QML 上下文关联,则返回相对于 QML 引擎基准 URL 解析后的url 。如果 QML 引擎没有基准 URL,则直接返回url 。
另请参阅 url()。
color rgba(real red, real green, real blue, real alpha)
返回一种具有指定red 、green 、blue 和alpha 分量的颜色。所有分量均应在0-1(含)的范围内。
注意:建议 使用类型化的Color::rgba
size size(real width, real height)
返回一个具有指定width 和height 的大小。
color tint(color baseColor, color tintColor)
此函数允许使用一种颜色(baseColor )对另一种颜色(tintColor )进行着色。
色调色通常应保持高度透明,否则将无法看到底色。下面的示例通过将色调色设为纯红色(不透明度仅为1/16)来产生轻微的红色色调。
Item {
Rectangle {
x: 0; width: 80; height: 80
color: "lightsteelblue"
}
Rectangle {
x: 100; width: 80; height: 80
color: Qt.tint("lightsteelblue", "#10FF0000")
}
}
当需要因某些事件而传达细微变化时,色调调整最为有用;此时,您可以利用色调调整更有效地微调可见颜色。
注意:建议 使用类型化的Color::tint
url url(url url)
原样返回url 。这可用于强制将类型转换为url 。与Qt XML的resolvedUrl()不同,该函数会保留所有相对URL。由于字符串会被隐式转换为URL,因此可以将字符串作为参数调用该函数,此时它将返回一个URL。
另请参阅 resolvedUrl()。
vector2d vector2d(real x, real y)
返回一个具有指定x 和y 值的vector2d。
vector3d vector3d(real x, real y, real z)
返回一个具有指定x 、y 和z 值的vector3d。
vector4d vector4d(real x, real y, real z, real w)
返回一个 vector4d,其中包含指定的x 、y 、z 和w 值。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.