Работа с кнопками

RosaControls предоставляет элемент Button с возможностью выбора пресета цвета и формы
Banner

Пример с параметрами

Button {

    text: i18n("large button")

    sizeName: 'large'      # размер кнопки (или выставить вручную with & height)

    paletteName: 'primary' # цвет текста и фона

    dangerous: true  # выставит цвет текста в красный, не зависимо от paletteName

    enabled: true    # если false, то иконка, текст и фон станут серыми

    flat: false      # true - уберет фон кнопки

}

Параметры цвета и формы

paletteName:

    "primary" # основная кнопка

    "secondary" # второстепенная кнопка

    "secondary-neutral" # черно-белый стиль

    "contextual" # без фона с обводкой



sizeName:

    "small"  # h32, r16

    "medium" # h40, r12

    "large"  # h48, r16

}
Button Size Light Button Palette Light
Button Size Dark Button Palette Dark

Button

Простая кнопка без фона.

ToolButton {

    text: i18n("Применить")

    icon.source: Rosa.Theme.icon('24/week-color')

}
Tool Button Light
Tool Button Dark

IconButton

Кнопка для отображения иконки, с пресетами по размеру.

IconButton {

    icon.source: Rosa.Theme.icon('16/close')

    sizeName: "xxsmall"

    shape: "circle"

    color: Rosa.Theme.additionalDarkThemeOrangeColor

}

Параметры размера и формы. При выборе параметров, сочетания размера и формы может не быть, тогда выставляется размер 48x48 px.

"xxsmall/circle": 16x16

"xsmall/circle":  20x20

"small/circle":   28x28

"middle/circle":  48x48

"slim/oval":      68x32

"small/oval":     45x29

"large/oval":     68x44

"xlarge/oval":    92x60

"xxlarge/oval":   154x44
Icon Button 1 Light Icon Button 2 Light Icon Button 3 Light Icon Button 4 Light
Icon Button 1 Dark Icon Button 2 Dark Icon Button 3 Dark Icon Button 4 Dark

IconLabelButton

Кнопка с иконкой и надписью. Основано на QML AbstractButton.

color # цвет фона

textColor # цвет текста

font # шрифт текста

elide: false # elide текста

spacing  # расстояние между "кнопкой" и надписью



# кастомизация "кнопки"

int buttonWidth: __sizes[sizeName].size.width

int buttonHeight: __sizes[sizeName].size.height

int radius: buttonHeight / 2



# пресеты размера кнопки

sizeName: 'slim'

    "slim": { size: Rosa.Theme.scaleSize(68, 32), spacing: Rosa.Theme.scale(4) }

    "large": { size: Rosa.Theme.scaleSize(68, 44), spacing: Rosa.Theme.scale(12) }

    "xlarge": { size: Rosa.Theme.scaleSize(92, 60), spacing: Rosa.Theme.scale(8) }
IconLabelButton {

    text: i18n("Switch wi-fi")

    icon.source: Rosa.Theme.icon('24/week-dark')

    sizeName: 'slim'

}



IconLabelButton {

    text: i18n("Switch wi-fi")

    icon.source: Rosa.Theme.icon('24/week-dark')

    sizeName: 'large'

    landscapeMode: true

}



IconLabelButton {

    text: i18n("Switch wi-fi")

    icon.source: Rosa.Theme.icon('24/week-dark')

    sizeName: 'xlarge'

}

CheckBox

Обычный checkbox с пресетами настроек для размера индикатора.

string sizeName: "small" # пресет размера индикатора

"smallest"

"small"

"large"



int spacing # расстояние между индикатором и текстом
CheckBox {

    sizeName: "smallest"

    text: "switch wifi"

}



CheckBox {

    sizeName: "small"

    text: "switch wifi"

}



CheckBox {

    sizeName: "large"

    text: "switch wifi"

}

Switch

Обычный переключатель, основанный на QML Switch. Доступен в RosaStyle.

text # текст переключателя

font: Rosa.Theme.labelMediumMidFont

palette.text: Rosa.Theme.textColor



spacing: Rosa.Theme.scale(4) # расстояние между индикатором и текстом
                        
Switch {

    onCheckedChanged: {

        process(checked)

    }

}



Switch {

    text: i18n("Switch with text")

}
Switch Light
Switch Dark