2012-02-21 13 views
6

Sto riscontrando problemi relativi al controllo/deselezione di QRadioButton. Le immagini che ho usato per controllare (un punto bianco) e deselezionare (senza un punto bianco) non sono aggiornate. Il mio problema è il seguente: Ho implementato alcuni QRadioButton. Per la prima volta tutti i QRadioButton sono stati falsificati. Quindi le immagini per questo caso sono prive di un punto bianco. Quando l'utente seleziona qualsiasi QRadioButton, l'immagine viene modificata in un'altra immagine, ad esempio con un punto bianco. Con un clic del mouse sto ripristinando lo stato dei pulsanti di opzione da selezionato per deselezionare lo stato. Tuttavia lo stato delle immagini non sta cambiando. Rimangono nello stato controllato. Il frammento di codice è il seguente:QRadioButton controlla/deseleziona il problema in Qt

Codice:

if(ui->radioButtonReadOnlineData->isChecked()) 
    ui->radioButtonReadOnlineData->setChecked(false); 
if(ui->radioButtonSavetoDBReadOfflineData->isChecked()) 
    ui->radioButtonSavetoDBReadOfflineData->setChecked(false); 
if(ui->radioButtonViewLocalData->isChecked()) 
    ui->radioButtonViewLocalData->setChecked(false); 
if(ui->radioButtonDateRange->isChecked()) 
    ui->radioButtonDateRange->setChecked(false); 
if(ui->radioButtonAll->isChecked()) 
    ui->radioButtonAll->setChecked(false); 

Le immagini per ciascuno dei QRadioButtons è impostato come come:

Codice:

ui->radioButtonAll->setStyleSheet(
      "QRadioButton::indicator::checked { image: url(:/Resources/radio-btn-selected.png);}" 
      "QRadioButton::indicator::unchecked {image: url(:/Resources/radio-btn-unselected.png);}" 
      ); 

Degli indizi per cui il QRradioButton le immagini non sono aggiornate. Grazie.

risposta

0

Assicurarsi che il file di risorse assomigliare:

<qresource> 
    <file>Resources/radio-btn-selected.png</file> 
    <file>Resources/radio-btn-unselected.png</file> 
</qresource> 

e che sia incluso correttamente nell'applicazione.

  • O include il .qrc nel file .pro con
RESOURCES = myresource.qrc 
  • o creare un file di risorse binario esterno, quindi registrarlo in fase di esecuzione con
  • Oppure se si sta utilizzando il designer, è possibile eseguire like this.
11

Il tuo problema è molto probabilmente legato alla

setAutoExclusive (bool)

Per impostazione predefinita tutti i pulsanti appartenenti alla stessa si comportano genitore come se fossero parte dello stesso gruppo esclusivo pulsante . Dopo aver selezionato uno non si è in grado di tornare ad avere tutti i pulsanti deselezionati.

un lavoro in giro è quello di scoprire che cosa pulsante è selezionato, e per questo pulsante effettuare le seguenti operazioni

theSelectedButton->setAutoExclusive(false); 
thsSelectedButton->setChecked(false); 
theSelectedButton->setAutoExclusive(true); 

Date un'occhiata a questi link per ulteriori informazioni:

http://developer.qt.nokia.com/forums/viewthread/5482

http://www.qtforum.org/article/19619/qradiobutton-setchecked-bug.html

+0

il seguente codice funziona con un problema: – user1182217

+0

il seguente codice funziona con un problema: 'theSelectedButton -> setCheckable (false); thsSelectedButton-> setChecked (false); theSelectedButton-> setCheckable (true); 'problema è che il pulsante di opzione selezionato in precedenza appare quando si seleziona un nuovo pulsante di opzione. Come potrei impedirlo? per favore guidami – user1182217

+0

Potrebbe aggiungere il codice aggiornato alla domanda? – Kristofer