2012-11-19 28 views
5

Ho 3 pulsanti di opzione nella mia pagina (applicazione desktop QML), una volta che ne ho spuntato uno voglio che tutti gli altri siano deselezionati. Ho provato ad utilizzare CheckableGroup con il codice che ho trovato nella guidaRadioButton in 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 
} 
} 

ma sto ottenendo un errore "platformExclusiveGroup non è un nome di proprietà valido" ho provato un'altra soluzione

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

che quando un pulsante è selezionato, tutti gli altri sono deselezionati, ma gli altri pulsanti lasciati controllati fino a quando non muovo il mouse su di essi - non vengono visualizzati.

qualche idea su come implementarlo?

risposta

1

I RadioButton in QML componenti del desktop non supporta il tuo primo approccio, ma si potrebbe provare questa soluzione invece:

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

Grazie per la risposta, JuliusG, ma ho provato, e di nuovo - anche se i pulsanti diventano incontrollato, non riesco a vedere che fino a quando mi muovo il mouse su di loro, e voglio che i pulsanti incontrollato a sembrare come deselezionare immediatamente quando diventano deselezionate. Avete qualche idea per completare questa soluzione? Grazie in anticipo! – user1835297

+0

Ho risolto il codice e ora funziona. Potrebbe ancora essere migliorato impostando le protezioni quando si preme lo stesso pulsante, ecc., Ma si spera che possa darvi un'idea. – JuliusG

+0

Grazie ancora, Funziona bene ora, il segno di spunta e quello deselezionato cambiano davvero come volevo, buttt --- Non riesco a vederlo, fino a quando non muovo il mouse su di loro !!! Cosa dovrei fare??? – user1835297

2

è necessario specificare un ExclusiveGroup per i 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 
    } 
}