Containers¶
Layout and container controls.
Layout¶
Layout/RowFit/VBoxLayout— layout containersSplitPane— draggable split panelScrollArea— scroll area (smooth scrolling + custom scrollbar)
SkinScope¶
Apply a different design language to one subtree while preserving the global skin and user configuration:
An empty skin follows the nearest parent scope. Most content needs no manual
token wiring; use skinContext: scope.context only when a popup or dialog is
declared outside the scope.
Separator¶
import PrismQML as Fluent
Fluent.Separator { } // horizontal, auto-fill
Fluent.Separator { type: 1 } // vertical
GroupBox¶
Drawer¶
Edge-slide panel.
Timeline¶
Virtualized timeline (no frame drops on large datasets).
RefreshContainer¶
Wraps pull-to-refresh around content. The container auto-detects the first
Flickable inside the content as the scroll surface, takes over the vertical
gesture only while that surface sits at its top, and otherwise hands scrolling
back untouched.
import PrismQML as Fluent
Fluent.RefreshContainer {
refreshing: model.refreshing // host-owned state
onRefreshRequested: model.reload()
ListView { model: model.items } // content goes through the default property
}
| Member | Meaning |
|---|---|
refreshing: bool |
Host-owned. The container sets it true when a refresh starts; the host must set it back to false (do not bind it) |
pullThreshold: int |
Pull distance that arms a refresh, defaults to Enums.controlSize.refreshPullThreshold |
interactionEnabled: bool |
Whether the pull gesture is allowed |
target: Flickable |
Explicit scroll surface; auto-detected when empty |
progress / armed / indicatorVisible |
Read-only: pull progress, whether it is armed, indicator visibility |
refreshRequested() |
Emitted when the pull arms or requestRefresh() is called |
requestRefresh() |
Start a refresh programmatically |
The indicator is centered above the container top and slides in with the
displacement; the read-only state is available for custom drawing. The scroll
surface is re-detected when the content children change, so no manual rebinding
is needed (or pin it explicitly with target).
Skin adaptation¶
Under neo: GroupBox / Drawer and other containers get thick black borders; Separator uses black or medium-gray depending on context (lightweight dividers use gray to avoid scroll shimmer).