2012-11-19 18 views
5

Mam 3 przyciski radiowe na mojej stronie (aplikacja komputerowa QML), gdy raz zaznaczyłem jedną, a wszystkie pozostałe mają być odznaczone. Próbowałem za pomocą CheckableGroup z kodem I znaleźć w pomocyRadioButton w QML Desktop

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 
} 
} 

ale dostaję błąd „platformExclusiveGroup nie jest poprawną nazwą właściwość” próbowałem Innym rozwiązaniem

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

że kiedy jeden przycisk jest zaznaczony, wszystkie pozostałe są odznaczone, ale pozostałe przyciski pozostają w lewo, dopóki nie poruszę na nich myszką - one się odznaczają.

jakikolwiek pomysł, jak go wdrożyć?

Odpowiedz

1

W RadioButton w QML Elementy pulpitu nie obsługuje swoje pierwsze podejście, ale można spróbować tego obejścia zamiast:

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 
     } 
    } 
} 
+0

Dzięki za odpowiedź, JuliusG, ale próbowałem go i ponownie - choć przyciski będą zaznaczone, nie mogę zobaczyć, że dopóki nie przesunąć kursor nad nimi, a ja chcę niekontrolowane przyciski wydają jak odznaczone natychmiast, gdy zostaną odznaczone. Czy masz jakiś pomysł na uzupełnienie tego rozwiązania? Dzięki! – user1835297

+0

Naprawiłem kod i teraz działa. Można go jeszcze poprawić, ustawiając osłony po naciśnięciu tego samego przycisku itp., Ale mam nadzieję, że da ci to pomysł. – JuliusG

+0

Jeszcze raz dziękuję, działa dobrze teraz, zaznaczone i niezaznaczone naprawdę zmieniają się tak, jak chciałem, ale - nie widzę tego, dopóki nie przesunę myszki nad nimi !!! Co powinienem zrobić??? – user1835297

2

Musisz podać ExclusiveGroup dla RadioButton s.

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 
    } 
}