Slint Kit Documentation

Buttons and actions

KitPressable

Action primitive that coordinates pointer, keyboard and focus for custom buttons.

Action primitive that coordinates pointer, keyboard and focus for custom buttons.
Native screenshot of the same example, rendered with Skia.

Place non-interactive content in its children and supply an accessible-name. Choose ButtonIntent, ControlSize and ControlWidth.intrinsic or .fill, or provide a recipe.

activated reports an accepted action; disabled and busy prevent activation. Enter activates on press, Space on release, and cancel-press() cancels an armed interaction.

Complete example

This complete Slint file is a visual composition used to produce the screenshot above. Internal strings without a label property retain the kit’s default language; system dialogs follow the host platform. Projected state and callbacks requesting a decision need host wiring; the standalone fixture does not supply that controller. Set up the Rust project, then see the typed controller application for working editing, validation and selection.

// SPDX-License-Identifier: GPL-3.0-or-later
import { KitPressable, KitTheme, KitThemes } from "@kit/kit.slint";

export component Example inherits Window {
    title: "KitPressable example";
    preferred-width: 360px;
    preferred-height: 160px;
    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: "Pressable"; color: root.theme.text-primary; font-size: 20px * root.theme.text-scale; font-weight: 600; }
        KitPressable { theme: root.theme; accessible-name: "Add to collection"; activated => { root.status = "Added to collection"; } Text { text: "Add to collection"; color: root.theme.text-primary; horizontal-alignment: center; vertical-alignment: center; } }
        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. The declarations below come from the component source. Parent properties remain available; see the controller guide for state management.

Properties

Name Type Direction
theme KitTheme in
intent ButtonIntent in
control-size ControlSize in
control-width ControlWidth in
recipe ButtonRecipe in
accessible-name string in
disabled bool in
busy bool in
tab-stop bool in
hovered bool out
pressed bool out
has-focus bool out
focus-visible bool out

Types and variants

Names below use Slint syntax. Shared Rust domain types live in slint_kit; presentation enums come from the Rust types generated by Slint.

Type Declaration
enum ButtonIntent primary, secondary, quiet, destructive
enum ControlSize compact, medium, comfortable
enum ControlWidth intrinsic, fill

Callbacks

Functions

See also