Снимите флажок с кнопки, если кнопки являются эксклюзивными в Qt Quick Controls 2 - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно составить список проверяемых AbstractButton, которые должны быть эксклюзивными, но по умолчанию я не могу снять флажок с отмеченной кнопки, когда ни одна кнопка не отмечена.

Теперь я должен сделать что-то подобное, чтобы подражать такой логике:

Item {
    AbstractButton {
        id: oneButton
        checkable: true
        onCheckedChanged: {
            if(checked) {
                if(twoButton.checked || threeButton.checked || ...) {
                    twoButton.checked = threeButton.checked = ... = false
                }
            }
        }
    }

    AbstractButton {
        id: twoButton
        checkable: true
        onCheckedChanged: {
            if(checked) {
                if(oneButton.checked || threeButton.checked || ...) {
                    oneButton.checked = threeButton.checked = ... = false
                }
            }
        }
    }
    ...
}

Это ужасно, и было бы здорово найти лучшее решение.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вы можете иметь неконтролируемую эксклюзивную кнопку, заставив ее снять галочку с релиза:

Button {
    checkable: true
    autoExclusive: true
    property bool wasChecked
    onPressed: wasChecked = checked
    onReleased: {
        if (wasChecked) {
            checked = false;
            toggled(); // emit the toggled signal manually, since we changed the checked value programmatically but it still originated as an user interaction.
        }
    }
}
0 голосов
/ 29 июня 2018

Как насчет этого:

Column {
  id: col
  spacing: 2
  property int choice: -1
  Repeater {
    model: 5
    delegate: Button {
      checkable: true
      checked: col.choice === index
      onClicked: col.choice = (col.choice === index ? -1 : index)
      text: "Button " + index
    }
  }
  Text {
    text:  "Choice is " + (col.choice > -1 ? col.choice : "undefined")
  }
}

Обратите внимание, что графический интерфейс будет обновлять свойство, даже если choice задано где-то еще, или если у вас есть эта группа кнопок в более чем одном месте в графическом интерфейсе, если они все совместно используют choice.

...