Skip to content

ScrollView

import { ScrollView } from "std-widgets.slint";
export component Example inherits Window {
width: 200px;
height: 200px;
ScrollView {
width: 200px;
height: 200px;
viewport-width: 300px;
viewport-height: 300px;
Rectangle { width: 30px; height: 30px; x: 275px; y: 50px; background: blue; }
Rectangle { width: 30px; height: 30px; x: 175px; y: 130px; background: red; }
Rectangle { width: 30px; height: 30px; x: 25px; y: 210px; background: yellow; }
Rectangle { width: 30px; height: 30px; x: 98px; y: 55px; background: orange; }
}
}
slint
scrollview example

A Scrollview contains a viewport that is bigger than the view and can be scrolled. Compared to a plain Flickable it has scrollbar to interact with.

The ScrollView is scrollable if the viewport-width and viewport-height properties are bigger than the size of the visible area.

If the ScrollView contains a layout, the default value for the viewport-width and viewport-height is the minimum size of that layout.

bool default: true

Used to render the frame as disabled or enabled, but doesn’t change behavior of the widget.

bool (in) default: true for Material style, false for all others

When true, the view can be scrolled by dragging with the mouse.

bool (in-out) default: false

Used to render the frame as focused or unfocused, but doesn’t change the behavior of the widget.

length (in-out) default: 0px

The width of the viewport of the scrollview.

length (in-out) default: 0px

The height of the viewport of the scrollview.

length (in-out) default: 0px

The x position of the scrollview relative to the viewport. This is usually a negative value.

length (in-out) default: 0px

The y position of the scrollview relative to the viewport. This is usually a negative value.

length (out)

The width of the visible area of the ScrollView (not including the scrollbar)

length (out)

The height of the visible area of the ScrollView (not including the scrollbar)

enum ScrollBarPolicy default: as-needed

The vertical scroll bar visibility policy.

ScrollBarPolicy

This enum describes the scrollbar visibility

  • as-needed: Scrollbar will be visible only when needed
  • always-off: Scrollbar never shown
  • always-on: Scrollbar always visible

enum ScrollBarPolicy default: as-needed

The horizontal scroll bar visibility policy.

ScrollBarPolicy

This enum describes the scrollbar visibility

  • as-needed: Scrollbar will be visible only when needed
  • always-off: Scrollbar never shown
  • always-on: Scrollbar always visible

Invoked when viewport-x or viewport-y is changed by a user action (dragging, scrolling).

ScrollView {
width: 200px;
height: 200px;
viewport-width: 300px;
viewport-height: 300px;
Rectangle { width: 30px; height: 30px; x: 275px; y: 50px; background: blue; }
Rectangle { width: 30px; height: 30px; x: 175px; y: 130px; background: red; }
Rectangle { width: 30px; height: 30px; x: 25px; y: 210px; background: yellow; }
Rectangle { width: 30px; height: 30px; x: 98px; y: 55px; background: orange; }
scrolled() => {
debug("viewport-x: ", self.viewport-x);
debug("viewport-y: ", self.viewport-y);
}
}
slint

© 2026 SixtyFPS GmbH