Focus Handling
Certain elements such as TextInput accept input from the mouse/finger and
also key events originating from (virtual) keyboards. In order for an item to receive
these events, it must have focus. This is visible through the has-focus (out) property.
You can manually activate the focus on an element by calling focus():
import { Button } from "std-widgets.slint";
export component App inherits Window { VerticalLayout { alignment: start; Button { text: "press me"; clicked => { input.focus(); } } input := TextInput { text: "I am a text input field"; } }}Similarly, you can manually clear the focus on an element that’s currently focused, by calling clear-focus():
import { Button } from "std-widgets.slint";
export component App inherits Window { VerticalLayout { alignment: start; Button { text: "press me"; clicked => { input.clear-focus(); } } input := TextInput { text: "I am a text input field"; } }}After clearing the focus, keyboard input to the window is discarded until another element is explicitly
focused. For example by calling focus(), an element acquiring focus when the user clicks on it, or when
pressing tab and the first focusable element is found.
If you have wrapped the TextInput in a component, then you can forward such a focus activation
using the forward-focus property to refer to the element that should receive it:
import { Button } from "std-widgets.slint";
component LabeledInput inherits GridLayout { forward-focus: input; Row { Text { text: "Input Label:"; } input := TextInput {} }}
export component App inherits Window { GridLayout { Button { text: "press me"; clicked => { label.focus(); } } label := LabeledInput { } }}If you use the forward-focus property on a Window or a PopupWindow, then the specified element will receive
the focus the first time the window receives the focus - it becomes the initial focus element.
© 2025 SixtyFPS GmbH