Slint Kit Documentation

Feedback and progress

Alert for Slint

KitAlert · Slint Kit 0.3.0

Contextual message for a result, information or error.

Contextual message for a result, information or error.
Native app built from the example below.

Try the component

Download the complete project, extract it and run cargo run --locked in its folder. Rust 1.92+; Slint Kit 0.3.0 from crates.io. You can also copy the four files below.

Dismiss the saved alert, then show it again. Rust removes and restores its view.

ui/app.slint

export { KitFormValidation, HtmlInputKind, NumberInputFormat, KitInputConstraints, KitValidationResult, KitValidityState } from "@kit/kit.slint";
// SPDX-License-Identifier: GPL-3.0-or-later
import { KitAlert, KitButton, AlertSeverity, KitTheme, KitThemes } from "@kit/kit.slint";
export component App inherits Window {
    title: "KitAlert example";
    preferred-width: 520px;
    preferred-height: 280px;
    max-width: 100000px;
    max-height: 100000px;
    background: root.theme.canvas;
    in-out property <KitTheme> theme: KitThemes.light;
    in property <bool> showing: true;
    callback dismiss();
    callback show();
    VerticalLayout {
        padding: 24px;
        spacing: 16px;
        alignment: start;
        if root.showing: control := KitAlert { theme: root.theme; severity: AlertSeverity.success; title: "Changes saved"; message: "Your team can read the updated project."; dismissible: true; dismissed => { root.dismiss(); } }
        KitButton { theme: root.theme; text: "Show alert"; activated => { root.show(); } }
        result := Text { text: root.showing ? "Alert visible" : "Alert dismissed"; color: root.theme.text-primary; }
    }

}

src/main.rs

// SPDX-License-Identifier: GPL-3.0-or-later
use slint::ComponentHandle;

mod ui { slint::include_modules!(); }
fn main() -> Result<(), slint::PlatformError> {
    let app = ui::App::new()?;
    slint_kit::init_form_validation!(ui, app);
    let weak = app.as_weak();
    app.on_dismiss(move || { if let Some(app) = weak.upgrade() { app.set_showing(false); } });
    let weak = app.as_weak();
    app.on_show(move || { if let Some(app) = weak.upgrade() { app.set_showing(true); } });
    app.run()
}

Cargo.toml and build.rs

Cargo.toml

[package]
name = "slint-kit-alert-example"
version = "0.1.0"
edition = "2024"
rust-version = "1.92"
license = "GPL-3.0-or-later"
publish = false

[dependencies]
slint-kit = "=0.3.0"
slint = { version = "=1.18.1", default-features = false, features = ["std", "compat-1-18", "backend-winit", "renderer-skia", "accessibility"] }

[build-dependencies]
slint-kit-build = "=0.3.0"

[workspace]

build.rs

fn main() { slint_kit_build::compile("ui/app.slint").expect("compile component example"); }

Files: Cargo.toml · build.rs · ui/app.slint · src/main.rs

Set severity: AlertSeverity.information, .success, .warning or .error, with an explicit heading. Enable dismissible and handle dismissed to remove the message in owning state.

The component does not close itself. Its accessibility role requests a polite announcement, or assertive for errors, subject to actual backend support.

Visual composition

The file below produces the screenshot. For controller-driven components, it shows the displayed state without supplying the Rust wiring. Create a project.

Show the screenshot source
Contextual message for a result, information or error.
Native screenshot of the same example, rendered with Skia.
// SPDX-License-Identifier: GPL-3.0-or-later
import { AlertSeverity, KitAlert, KitTheme, KitThemes } from "@kit/kit.slint";

export component Example inherits Window {
    title: "KitAlert example";
    preferred-width: 480px;
    preferred-height: 220px;
    max-width: 100000px;
    max-height: 100000px;
    background: root.theme.canvas;
    in-out property <KitTheme> theme: KitThemes.light;
    in-out property <string> status;
    VerticalLayout {
        padding: 24px; spacing: 16px; alignment: start;
        Text { text: "Alert"; color: root.theme.text-primary; font-size: 20px * root.theme.text-scale; font-weight: 600; }
        KitAlert { theme: root.theme; severity: AlertSeverity.success; title: "Changes saved"; message: "Your team can now see the updated project."; dismissible: true; dismissed => { root.status = "Dismiss requested"; } }
        if root.status != "": Text { text: root.status; color: root.theme.text-secondary; font-size: 12px * root.theme.text-scale; wrap: word-wrap; }
    }
}

Download this example

Public API

Inherits Rectangle.

Properties

Name Type Direction
theme KitTheme in
severity AlertSeverity in
title string in
message string in
dismissible bool in

Types and variants

Type Declaration
enum AlertSeverity information, success, warning, error

Callbacks

See also