QML桌面中的RadioButton

时间:2012-11-19 09:25:17

标签: qt radio-button desktop qml

我的页面中有3个单选按钮(QML桌面应用程序),一旦我选中了一个,我希望所有其他按钮都不被选中。 我尝试使用CheckableGroup和我在帮助中找到的代码

CheckableGroup { id: group }
Row {
 id: row
 spacing: platformStyle.paddingMedium
 RadioButton {
     id: button1
     text: "1"
     platformExclusiveGroup: group
 }
 RadioButton {
     id: button2
     text: "2"
     platformExclusiveGroup: group
 }
 RadioButton {
     id: button3
     text: "3"
     platformExclusiveGroup: group
     checked: true
 }
}

但我收到错误“platformExclusiveGroup不是有效的属性名称” 我尝试了另一种解决方案

RadioButton{
  id:rbtnDecimal1;
  width: 130;
  onClicked:{
    if(checked){
      rbtnHexadecimal1.checked=false;
      rbtnString1.checked=false;
    }
  }
  text: "Decimal Data";
  anchors.left:rbtnHexadecimal1.right
}

当选中一个按钮时,所有其他按钮都会被取消选中,但其他按钮会被检查,直到我将鼠标移到它们上面 - 它们会被取消选中。

任何想法如何实现它?

2 个答案:

答案 0 :(得分:3)

您需要为RadioButton指定ExclusiveGroup

Row {
    id: row
    ExclusiveGroup { id: group }
    RadioButton {
        id: button1
        text: "1"
        exclusiveGroup: group
    }
    RadioButton {
        id: button2
        text: "2"
        exclusiveGroup: group
    }
    RadioButton {
        id: button3
        text: "3"
        exclusiveGroup: group
        checked: true
    }
}

答案 1 :(得分:1)

QML桌面组件中的RadioButton不支持您的第一种方法,但您可以尝试使用此解决方法:

property int currentIndex: 1

onCurrentIndexChanged: {
    button1.checked = currentIndex == 0
    button2.checked = currentIndex == 1
    button3.checked = currentIndex == 2
}

Row {
    RadioButton {
        id: button1
        text: "1"
        onClicked:{
            currentIndex = 0
        }
    }
    RadioButton {
        id: button2
        text: "2"
        onClicked:{
            currentIndex = 1
        }
    }
    RadioButton {
        id: button3
        text: "3"
        onClicked:{
            currentIndex = 2
        }
    }
}