Skip to content

Structs and Enums

A struct declaration at the top level of a .slint source file defines a named structure type; its fields are written between braces, each a name and a type separated by :, the fields separated by commas, and a struct with no fields is allowed.[sls.struct.decl]

Each field’s type can be any property type.[sls.struct.field-type]

export struct Palette {
fill: color,
gap: length,
}
slint

A field shall not declare a default value.[sls.struct.no-field-default]

The default value of a struct is the value whose every field holds the default value of its type.[sls.struct.default]

A struct value is written as a struct literal that initializes fields by name, { field1: value1, field2: value2 }, with an optional trailing comma.[sls.struct.literal]

A struct literal shall initialize every field of the struct exactly once, and shall not name a member that the struct does not have.[sls.struct.literal.exact]

A field is read with the . operator, as in palette.fill.[sls.struct.field-access]

export struct Palette {
fill: color,
gap: length,
}
export component Example inherits Window {
out property <Palette> palette: { fill: #f00, gap: 2px };
out property <color> tint: palette.fill;
}
slint

An enum declaration at the top level defines an enumeration; its values are listed between braces, separated by commas.[sls.enum.decl]

An enum shall have at least one value.[sls.enum.nonempty]

A value shall not have the same name as the enum.[sls.enum.value-name]

The values shall be distinct; - and _ are the same character within a name, so hello-world and hello_world name one value.[sls.enum.distinct]

No two values shall map to the same generated name, formed by dropping - and _ and capitalizing the first letter of the name and of each word after a separator. hello-world and HelloWorld are different values but map to the same name, so an enum cannot declare both.[sls.enum.name-collision]

export enum Direction { up, down, left, right }
export component Example inherits Window {
in-out property<Direction> heading: Direction.up;
}
slint

An enum value is referenced with the enum name and the value name separated by a dot, as in Direction.up.[sls.enum.value]

The default value of an enum is its first value.[sls.enum.default]


© 2026 SixtyFPS GmbH