Run with --diagnose --json to check your Qt version, import path, fonts, runtime and license. No license token is printed.
The Gallery evaluation app is available now. Paid SDK sales and downloads are coming soon. The installation examples above preview the SDK workflow.
Tested Windows configurations
Native window and example smoke checks cover the versions below. Qt 6.8 is a source minimum, not a promise of tested support for every Qt release. Gallery uses software rendering.
Two complete application examples
Step-by-step captures from the running Windows applications. Play, pause and inspect each state.
Workbench: mark a task done, save changes and see release progress update.Record Manager: preserve a failed save, retry, search and confirm before deleting.
See the components in context
RibbonPanelFormTableTreeTheme
TRY IT YOURSELF
The native Gallery
Browse examples, inspect properties and switch between light and dark themes in a Windows application. The Gallery is for evaluation; commercial SDK access is separate.
The --qml path must contain the Syidax folder. Python uses qml-pure. Run from the unzipped SDK, independently of the source repository.
License is inactive or frozen
Download your QML Core certificate and pass it with --license. Web Core, Chart and Grid certificates do not activate QML. Monthly use ends at expiry. Annual licenses retain only releases covered by their update period.
Qt or plugin mismatch
Check the Qt version and architecture used to build plugins. Do not mix Python Qt bindings. qml-pure removes the compiled plugin ABI dependency.
PDF or icons missing
PDF requires the optional QtQuick.Pdf module. Other Core components remain usable without it. For icon packs and resource paths, read SDK docs/ICON-PACKS.md.
Save failure or corrupt settings
Examples write only to their application-data folder. Check permissions and disk space. Invalid JSON is backed up before reset. A failed save preserves your draft.
Hover or select an item for its QML example and copy button.
Properties · SyMenu
Property
Type
Default
Description
list (default property)
—
The rows declared inside: SyMenuItem, SyMenuSub and SyMenuGroup, in order
bool
false
The popup state. Set it to open or close from a binding (no opened signal), read it to know; the popup keeps it in sync. No visible effect inline
bool
false
Every row gets a check box and reports itemChecked instead of itemSelected
string
"bottomLeft"
Popup placement: bottomLeft · bottomRight · topLeft · topRight; flips when there is no room. Ignored inline
string
"hover"
What opens the popup: hover · click · contextmenu (a right click). Ignored inline
string
"right"
The side submenus open on: right · left
bool
false
Every row and submenu inert; setOpen() and the right-click trigger refused
string
"inline"
inline or popup — decided from where the menu is declared; do not set it
bool
false
true once mode is decided (one event-loop turn after creation)
real
160
The width every row takes: the widest row, at least 160
var
[]
The collected rows — read items() instead
Properties · SyMenuItem
Property
Type
Default
Description
list (default property)
—
Items placed after the text (an icon, a shortcut hint)
string
""
The label; reported as label in the signal detail. Hidden when empty
string
""
What a pick reports
bool
false
Inert and greyed
bool
false
A small spinner before the text; inert
bool
false
A pick stays highlighted (select); one highlighted row per menu
bool
false
The highlight: set by a pick, cleared by the next pick elsewhere or clearSelectedItem(). Drawn only with selectable
bool
false
A check box before the text; a pick toggles checked and reports itemChecked
bool
false
The check box state
string (read-only)
—
Same as text
bool (read-only)
—
disabled, loading, or the menu is disabled
bool (read-only)
—
selectable && select — the highlight is drawn
bool (read-only)
—
checkable on the row or on the menu
bool (read-only)
—
The pointer is over the row
bool (read-only)
—
the row has keyboard focus
var
null
The owning SyMenu (set by the menu)
Properties · SyMenuSub
Property
Type
Default
Description
list (default property)
—
The rows of the submenu (items, groups, further submenus)
string
""
The row text
bool
false
The submenu state; set it to open or close, read it to know
string
"hover"
hover (closes 150 ms after the pointer leaves) · click
bool
false
The row inert; the submenu cannot open
bool (read-only)
—
Whether the submenu is showing
bool (read-only)
—
disabled on the row or on the menu
bool (read-only)
—
Pointer over the row
bool (read-only)
—
keyboard focus
var
null
The owning SyMenu (set by the menu)
Properties · SyMenuGroup
Property
Type
Default
Description
list (default property)
—
The rows under the title
string
""
The section title (12 px); the title row is omitted when empty
var
null
The owning SyMenu (set by the menu)
Methods
Method
Description
Opens the popup and emits opened(true). Ignored while disabled; the host control must be enabled. Inline: only sets open and emits
Closes the popup and emits opened(false). Works while disabled
Closes the popup and emits opened(false). Works while disabled
setClose() when open, else setOpen()
Sets selectable: true on every SyMenuItem, nested ones included
Sets select: false on every SyMenuItem — the highlight goes; checked is untouched
Returns the SyMenuItem and SyMenuSub rows in declaration order, flattened through groups and submenus
What a click does: pick, or toggle the check box. Ignored while inactive
Open (refused while disabled)
close
toggle the submenu
Signals
Signal
Arguments
When
state: bool
The popup opened (true) or closed (false): by the trigger, a pick, Escape, a press outside, or setOpen() / setClose() / toggle() / close(). Not when open is changed from a binding. Inline: only from the methods
detail: { value, label }
A plain or selectable row was picked (click, Space, Enter). Not for a checkable row, an inert row, or a disabled menu
detail: { value, label, checked }
A checkable row was toggled; the popup stays open
same as above
The row's own signals, emitted just before the menu's
same as above
The row's own signals, emitted just before the menu's
Behavior
Item
Behavior / conditions
One event-loop turn after creation the menu looks up its ancestors: if a SyDropdown, a SyMenuSub or another SyMenu holds it (however deep), it is inline; otherwise, if an ancestor within four levels reports a boolean hovered (every Core control does), that ancestor becomes the popup's anchor and the mode is popup.
true once mode is decided (one event-loop turn after creation)
The popup state. Set it to open or close from a binding (no opened signal), read it to know; the popup keeps it in sync. No visible effect inline
What opens the popup: hover · click · contextmenu (a right click). Ignored inline
Popup placement: bottomLeft · bottomRight · topLeft · topRight; flips when there is no room. Ignored inline
What a click does: pick, or toggle the check box. Ignored while inactive
A click, Space or Enter on a plain row emits the row's itemSelected(detail) and then the menu's, with detail = { value, label } (label is the row's text). A checkable row behaves differently: the click toggles checked, copies it into select, emits itemChecked({ value, label, checked }) on the row and the menu, emits noitemSelected, and leaves the popup open.
A click, Space or Enter on a plain row emits the row's itemSelected(detail) and then the menu's, with detail = { value, label } (label is the row's text). In popup mode the popup then closes (opened(false)); inline inside a dropdown, the dropdown's select(detail) runs, so the dropdown emits selected and closes.
What a pick reports
Same as text
The label; reported as label in the signal detail. Hidden when empty
The popup opened (true) or closed (false): by the trigger, a pick, Escape, a press outside, or setOpen() / setClose() / toggle() / close(). Not when open is changed from a binding. Inline: only from the methods
The highlight: set by a pick, cleared by the next pick elsewhere or clearSelectedItem(). Drawn only with selectable
A pick stays highlighted (select); one highlighted row per menu
The check box state
A checkable row behaves differently: the click toggles checked, copies it into select, emits itemChecked({ value, label, checked }) on the row and the menu, emits noitemSelected, and leaves the popup open.
Every row gets a check box and reports itemChecked instead of itemSelected
Every row and submenu inert; setOpen() and the right-click trigger refused
A small spinner before the text; inert
Inert and greyed
Opens the popup and emits opened(true). Ignored while disabled; the host control must be enabled. Inline: only sets open and emits
The row text
The side submenus open on: right · left
Whether the submenu is showing
Returns the SyMenuItem and SyMenuSub rows in declaration order, flattened through groups and submenus
The width every row takes: the widest row, at least 160
Tab reaches the rows. On a focused row Up / Down move to the previous / next enabled row (wrapping), Space / Enter pick, Escape closes the menu. On a focused submenu row Right opens it, Left or Escape closes it, Space / Enter toggle it.
setClose() works while disabled, setOpen() does not.
Keyboard
Item
Behavior / conditions
SyDropdown hosts an inline menu under a titled box; SyButton is the usual popup host; SyNav is the sidebar counterpart for navigation.