2#include "qml_material/control/container.hpp"
3#include "qml_material/control/button_group.hpp"
4#include "qml_material/core/enum.hpp"
9class QML_MATERIAL_API SegmentedButtonGroup :
public MaterialContainer {
11 QML_NAMED_ELEMENT(SegmentedButtonGroup)
12 Q_PROPERTY(ButtonGroup* group READ group CONSTANT FINAL)
13 Q_PROPERTY(
bool exclusive READ isExclusive WRITE setExclusive NOTIFY exclusiveChanged FINAL)
14 Q_PROPERTY(
int size READ buttonSize WRITE setButtonSize NOTIFY sizeChanged BINDABLE
15 bindableButtonSize FINAL)
17 explicit SegmentedButtonGroup(QQuickItem* parent =
nullptr);
18 ButtonGroup* group()
const {
return m_group; }
19 bool isExclusive()
const {
return m_group->isExclusive(); }
20 void setExclusive(
bool value) { m_group->setExclusive(value); }
21 Q_SIGNAL
void exclusiveChanged();
22 int buttonSize()
const {
return m_size.value(); }
23 void setButtonSize(
int value) { m_size = value; }
24 QBindable<int> bindableButtonSize() {
return QBindable<int>(&m_size); }
25 Q_SIGNAL
void sizeChanged();
28 bool isContent(QQuickItem*)
const override;
29 void itemAdded(QQuickItem*)
override;
30 void itemRemoved(QQuickItem*)
override;
31 void updatePolish()
override;
35 Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(SegmentedButtonGroup,
int, m_size,
36 int(Enum::ButtonSize::S),
37 &SegmentedButtonGroup::sizeChanged)