Slint 模块

Slint 模块

定义在.slint文件用的组件能够作为一个元素被其他.slint文件使用,也就是说可以被导出或者导入

在一般情况下,每一个被定义在.slint文件中的类型都是私有的,使用export属性可以改变。

1
2
3
4
5
6
7
8
9
10
11
12
component ButtonHelper inherits Rectangle {
// ...
}

component Button inherits Rectangle {
// ...
ButtonHelper {
// ...
}
}

export { Button }

在这个例子中,Button能够被其他.slint文件访问,但是ButtonHelper不可以

也可以仅出于导出目的更改名称,而不影响其内部使用:

1
2
3
4
5
component Button inherits Rectangle {
// ...
}

export { Button as ColorButton }

在这里例子中,Button不再能够被其他.slint文件访问到了,取而代之的是ColorButton这个名字

为了方便起见,导出组件的第三种方法是立即声明它已导出:

1
2
3
export component Button inherits Rectangle {
// ...
}

同样,可以导入从其他文件导出的组件:

1
2
3
4
5
6
7
8
import { Button } from "./button.slint";

export component App inherits Rectangle {
// ...
Button {
// ...
}
}

如果两个文件以相同的名称导出类型,则您可以选择在导入时分配不同的名称:

1
2
3
4
5
6
7
8
import { Button } from "./button.slint";
import { Button as CoolButton } from "../other_theme/button.slint";

export component App inherits Rectangle {
// ...
CoolButton {} // from other_theme/button.slint
Button {} // from button.slint
}

元素,全局单例以及结构体都能够被导入和导出。
还可以导出从其他文件导入的全局变量(请参阅全局单例):

1
2
import { Logic as MathLogic } from "math.slint";
export { MathLogic } // known as "MathLogic" when using native APIs to access globals

模块语法

导入类型支持以下语法:

1
2
3
4
import { export1 } from "module.slint";
import { export1, export2 } from "module.slint";
import { export1 as alias1 } from "module.slint";
import { export1, export2 as alias2, /* ... */ } from "module.slint";

导出类型支持以下语法:

1
2
3
4
5
6
7
8
9
10
// Export declarations
export component MyButton inherits Rectangle { /* ... */ }

// Export lists
component MySwitch inherits Rectangle { /* ... */ }
export { MySwitch };
export { MySwitch as Alias1, MyButton as Alias2 };

// Re-export all types from other module
export * from "other_module.slint";

组件库

将代码库拆分为单独的模块文件可以促进重用,并通过允许您隐藏帮助器组件来改进封装。这在项目自己的目录结构中效果很好。要在项目之间共享组件库而不对其相对路径进行硬编码,请使用组件库语法:

1
import { MySwitch } from "@mylibrary";

在上面的示例中,MySwitch 组件将从名为“mylibrary”的组件库中导入。该库的路径必须在编译时单独定义。使用以下方法之一帮助 Slint 编译器将“mylibrary”解析为磁盘上的正确路径:

  • 当使用Rust语言并存在build.rs文件,调用with_library_paths来提供从库名称到路径的映射。
  • 当在命令行中使用slint-viewer时,附加参数-Lmylibrary=/path/to/my/library为每一个组件库
  • 在 VS 代码扩展中使用实时预览时,请使用Slint: Library Paths设置配置 Slint 扩展的库路径。

Slint 模块
http://cvrain.cloudvl.cn/2024/01/15/Slint/slint-modules/
作者
ClaudeRainer
发布于
2024年1月15日
许可协议