全局对象
全局对象 是使用 global 关键字在 .slint 文件顶层声明的单例。
它持有在整个项目中共享的属性、回调和函数,
而不是属于某个元素:
global Name { // property, callback, and function declarations}slint
全局对象声明一次并通过名字引用。
它永远不会作为元素实例化;在元素树中写 Name { } 是一个错误。
全局对象的主体可以包含:
- 属性声明 ——
in、out、in-out或私有,每个都可以有可选的绑定(见属性)。 - 回调声明 —— 可选为
pure(见回调)。 - 函数声明 —— 可选为
pure,以及private、protected或public(见函数)。
不允许其他内容。
全局对象不能包含元素或子组件、@children、animate 块、
states、transitions 或 init 回调;每一种都会构成编译错误。
全局对象独立于任何窗口存在,因此它没有缩放因子,也没有默认字体大小。
因此,全局对象内部的表达式不能在逻辑(px)和物理(phx)长度之间转换,
也不能在 rem 和逻辑长度之间转换。
通过全局对象的名字,从项目中的任何绑定、回调或函数, 以及从其他全局对象访问其成员:
Name.propertyName.callback(arguments)Name.function(arguments)slint
与所有标识符一样,- 和 _ 可以互换。
全局对象是单例:组件树中的每个组件共享同一个实例。
不同的窗口——以及与某个窗口一起导出的 SystemTrayIcon——各自持有自己的
实例,因此它们的全局对象独立初始化。
global Palette { in-out property<color> primary: blue; in-out property<color> secondary: green;}
export component Example inherits Rectangle { background: Palette.primary; border-color: Palette.secondary; border-width: 2px;}slint
导出的全局对象可以导入到其他文件中。 从同时导出应用根组件的文件重新导出的全局对象还会 暴露给原生 API,业务逻辑在其中读取和写入其属性并设置其回调。 全局对象指南展示了各语言的用法。
全局对象的属性或回调可以是双向绑定的目标, 从而在组件上重新暴露它。
© 2026 SixtyFPS GmbH