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.
size sets the box height — small 24 px · medium 32 px (the default) · large 40 px — together with the font, the padding and the icon size, and the tags of the multi modes take the same size.
loading: true replaces the rows with a single spinner row — the options are still there but cannot be picked, and the keys do nothing; use it while options are being fetched.
maxTagCount limits how many tags the multi-mode box shows: beyond that number the rest fold into one "+n" tag that cannot be removed (the picks are still selected and value still lists them); 0 shows every tag.
setValue(value | values) selects from code: a single option value, or a list of values in the multi modes (a list in a single mode applies its first known value).
Hover or select an item for its QML example and copy button.
Properties · SySelect
Property
Type
Default
Description
string
"default"
default · searchable · multiple · tag — see Behavior.
string or list (read-only binding)
—
The selected option value ("" when none) or, in the multi modes, the list of values. Do not assign; use defaultValue / setValue().
var
""
The selection to apply at creation and whenever it changes: a value, or a list of values (multi modes). reset() returns to it.
list
[]
The selection with labels: [{ value, label, isCustomTag }].
string
""
Shown in the box while nothing is selected.
string
"medium"
Box height small 24 · medium 32 · large 40 px; the tags follow.
string
"default"
default · error — error forces the error tones without changing validity.
bool
false
An × that empties the selection (cleared) while something is selected and the select is not disabled / readonly.
bool
false
Disabled tones; nothing opens or types; always valid.
bool
false
Readable selection, nothing opens, tags lose the ×; always valid.
bool
false
An empty selection is valueMissing.
bool
false
The list shows a spinner row instead of the options.
bool
false
The list shows the empty state instead of the options.
bool
false
Selected options leave the list.
int
0
Tags shown before the rest fold into "+n"; 0 shows all.
string
""
The text typed in a searchable / multi box (cleared when the list closes).
int
-1
The highlighted row in visibleOptions.
list
[]
The SyOption objects collected at creation.
read-only
—
The rows the list shows now (not hidden, matching the typed text) and their count.
read-only
—
The rows the list shows now (not hidden, matching the typed text) and their count.
bool (read-only)
—
The list is open.
bool (read-only)
—
Focus (or open list)
bool (read-only)
—
pointer over the box.
bool (read-only)
—
mode is multiple / tag · mode is not default.
bool (read-only)
—
mode is multiple / tag · mode is not default.
string
""
The frame's title, form key, helper text and custom error copy.
string
""
The frame's title, form key, helper text and custom error copy.
string
""
The frame's title, form key, helper text and custom error copy.
string
""
The frame's title, form key, helper text and custom error copy.
read-only
—
Validity: "" · valueMissing · custom; invalid is true once touched or reported.
read-only
—
Validity: "" · valueMissing · custom; invalid is true once touched or reported.
read-only
—
Validity: "" · valueMissing · custom; invalid is true once touched or reported.
real
240
The width when the app sets none.
Properties · SyOption (declared inside the select)
Property
Type
Default
Description
string
""
What the select reports for this option; must be unique.
string
""
What the row and the box show; empty → value is shown.
string (read-only)
—
label when set, else value.
bool
false
Drawn in the disabled tone; the user cannot pick it (setValue() can).
bool
false
Same as disabled for a row.
bool
false
Never listed; still selectable from code.
bool
false
Written by the select to mirror the selection.
bool
false
True on the entries the user typed in tag mode.
bool
false
Declared for parity; the select does not use it yet.
Methods
Method
Description
Replaces the selection from code — a value, or a list in the multi modes. Unknown values are dropped (tag mode: they become custom tags); a list in a single mode applies its first known value. No signal; works while disabled / readonly.
Empties the selection and the typed text, emits cleared. Ignored while disabled / readonly.
Opens the list (highlighting the first row) and emits opened. Ignored while disabled, readonly or already open.
Closes the list
opens or closes it.
Focuses the box
removes focus and closes the list.
Returns whether the status is "" (silent).
Same, and reveals the error line.
"", "valueMissing" or "custom".
Sets the status to custom (and marks the field touched)
clears it.
Selects defaultValue again and clears the touched / submitted / custom flags.
Signals
Signal
Arguments
When
—
The list opened (click, keys, typing, openDropdown()). No counterpart for closing — read open.
detail: { selectedOptions, isValid, status }
A user pick (click or Enter) or a custom tag added with Enter. Not for setValue(), defaultValue or reset().
detail: { item, selectedOptions, isValid, status }
A tag left: its ×, Backspace in the empty box, or a selected row picked again (multi modes). item is the entry that left. Not for clearValue().
—
The clear × or clearValue() emptied the selection.
text: string
The user edited the box text (searchable / multiple / tag).
detail: { selectedOptions, isValid, status }
The box gained / lost focus; detail is the field's detail() object.
detail: { selectedOptions, isValid, status }
The box gained / lost focus; detail is the field's detail() object.
Behavior
Item
Behavior / conditions
Selected options leave the list.
The selected option value ("" when none) or, in the multi modes, the list of values. Do not assign; use defaultValue / setValue().
On each option, value is what the select reports, label what the list and the box show (empty label → the value is shown; the read-only text gives that resolved label), disabled and readonly draw the row in the disabled tone and make it unpickable, hide keeps it out of the list, selected is written by the select, isCustomTag marks a tag the user typed. selectedOptions — the same selection with labels, [{ value, label, isCustomTag }]; this is what selected and removed carry.
label when set, else value.
Drawn in the disabled tone; the user cannot pick it (setValue() can).
Same as disabled for a row.
Never listed; still selectable from code.
Written by the select to mirror the selection.
True on the entries the user typed in tag mode.
Replaces the selection from code — a value, or a list in the multi modes. Unknown values are dropped (tag mode: they become custom tags); a list in a single mode applies its first known value. No signal; works while disabled / readonly.
value is derived from the selection: in default / searchable it is the selected option's value or ""; in multiple / tag it is the list of values. searchable: the box is editable; typing filters the rows (label contains the text, case-insensitive), emits inputChanged and opens the list; a pick replaces and closes; when the list closes the typed text is dropped and the label comes back.
The selection to apply at creation and whenever it changes: a value, or a list of values (multi modes). reset() returns to it.
Selects defaultValue again and clears the touched / submitted / custom flags.
The selection with labels: [{ value, label, isCustomTag }].
A tag left: its ×, Backspace in the empty box, or a selected row picked again (multi modes). item is the entry that left. Not for clearValue().
default · searchable · multiple · tag — see Behavior.
The user edited the box text (searchable / multiple / tag).
What the select reports for this option; must be unique.
What the row and the box show; empty → value is shown.
Opens the list (highlighting the first row) and emits opened. Ignored while disabled, readonly or already open.
The list opened (click, keys, typing, openDropdown()). No counterpart for closing — read open.
It closes on Escape, a press outside, a pick in the single modes, when the box loses focus, or closeDropdown(); there is no closed signal, read open.
The list is open.
The highlighted row in visibleOptions.
The list shows a spinner row instead of the options.
The list shows the empty state instead of the options.
Box height small 24 · medium 32 · large 40 px; the tags follow.
Readable selection, nothing opens, tags lose the ×; always valid.
Tags shown before the rest fold into "+n"; 0 shows all.
Disabled tones; nothing opens or types; always valid.
Empties the selection and the typed text, emits cleared. Ignored while disabled / readonly.
default · error — error forces the error tones without changing validity.
status: "error" forces the error tones. required with an empty selection gives the status valueMissing; setCustomError() gives custom (shown as "Invalid by custom" or your error text); disabled or readonly selects are always valid.
hasFocus is true while the box has focus or the list is open.
An empty selection is valueMissing.
required with an empty selection gives the status valueMissing; setCustomError() gives custom (shown as "Invalid by custom" or your error text); disabled or readonly selects are always valid.
Same, and reveals the error line.
name keys the field in SyForm.values(): value as is (a string, or a list in the multi modes).
name keys the field in SyForm.values(): value as is (a string, or a list in the multi modes).
Keyboard
Item
Behavior / conditions
Keyboard: Tab and Shift+Tab enter and leave the field. Hidden and disabled fields are skipped. Escape closes an open picker before continuing. Textarea uses Tab for focus navigation, including inside a modal; it does not insert indentation.