ExclusiveGroup QML Type | Qt Quick Controls 5.9

Qt 5.9 | Qt Quick Controls | QML Types | ExclusiveGroup QML Type

Qt 5.9.4 Reference Documentation

# ExclusiveGroup QML Type

ExclusiveGroup provides a way to declare several checkable controls as mutually exclusive. More...

Import Statement: | import QtQuick.Controls 1.4

- List of all members, including inherited members

## Properties

- current : object

## Methods

- void bindCheckable(object)
- void unbindCheckable(object)

## Detailed Description

ExclusiveGroup can contain several Action items, and those will automatically get their Action::exclusiveGroup property assigned.

      ExclusiveGroup {
          id: radioInputGroup

          Action {
              id: dabRadioInput
              text: "DAB"
              checkable: true
          }

          Action {
              id: fmRadioInput
              text: "FM"
              checkable: true
          }

          Action {
              id: amRadioInput
              text: "AM"
              checkable: true
          }
      }

Several controls already support ExclusiveGroup, e.g. Action, MenuItem, Button, and RadioButton.

As ExclusiveGroup only supports Action as child items, we need to manually assign the `exclusiveGroup` property for other objects.

      GroupBox {
          id: group2
          title: qsTr("Tab Position")
          Layout.fillWidth: true
          RowLayout {
              ExclusiveGroup { id: tabPositionGroup }
              RadioButton {
                  id: topButton
                  text: qsTr("Top")
                  checked: true
                  exclusiveGroup: tabPositionGroup
                  Layout.minimumWidth: 100
              }
              RadioButton {
                  id: bottomButton
                  text: qsTr("Bottom")
                  exclusiveGroup: tabPositionGroup
                  Layout.minimumWidth: 100
              }
          }
      }

## Adding support to ExclusiveGroup

It is possible to add support for ExclusiveGroup for an object or control. It should have a `checked` property, and either a `checkedChanged`, `toggled()`, or `toggled(bool)` signal. It also needs to be bound with ExclusiveGroup::bindCheckable() when its ExclusiveGroup typed property is set.

      Item {
          id: myItem

          property bool checked: false
          property ExclusiveGroup exclusiveGroup: null

          onExclusiveGroupChanged: {
              if (exclusiveGroup)
                  exclusiveGroup.bindCheckable(myItem)
          }
      }

The example above shows the minimum code necessary to add ExclusiveGroup support to any item.

## Property Documentation

current : object

The currently selected object. Defaults to the first checked object bound to the ExclusiveGroup. If there is none, then it defaults to `null`.

## Method Documentation

void bindCheckable(object)

Register `object` to the exclusive group.

You should only need to call this function when creating a component you want to be compatible with `ExclusiveGroup`.

See also ExclusiveGroup::unbindCheckable().

void unbindCheckable(object)

Unregister `object` from the exclusive group.

You should only need to call this function when creating a component you want to be compatible with `ExclusiveGroup`.

See also ExclusiveGroup::bindCheckable().