2012-02-21 25 views
6

Estoy encontrando problemas relacionados con marcar/desmarcar QRadioButton. Las imágenes que he usado para verificar (un punto blanco) y desmarcar (sin un punto blanco) no se actualizan. Mi problema es como: he implementado pocos QRadioButton (s). Por primera vez, todos los QRadioButtons marcaron falso. Entonces las imágenes para este caso son sin un punto blanco. Cuando el usuario selecciona cualquier QRadioButton, la imagen cambia a otra, es decir, una imagen con un punto blanco. En un botón, haga clic en Restablecer el estado de los botones de opción de marcados para desmarcar el estado. Sin embargo, el estado de las imágenes no está cambiando. Permanecen en estado verificado. El fragmento de código es el siguiente:QRadioButton verifica/desmarque el problema en Qt

Código:

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); 

Las imágenes para cada uno de los QRadioButtons se fija como como:

Código:

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

Alguna pista por qué el QRradioButton las imágenes no están actualizadas Gracias.

Respuesta

0

Asegúrese de que el archivo de recursos se parece a:

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

Y que se incluye correctamente en la aplicación.

  • De cualquier incluye el .qrc en su archivo .pro con
RESOURCES = myresource.qrc 
  • o bien crear un archivo de recursos binario externo, a continuación, registrar en tiempo de ejecución con
QResource::registerResource("/path/to/myresource.rcc"); 
  • O si está utilizando el diseñador, puede hacer like this.
11

Su problema es más probablemente relacionado con

setAutoExclusive (bool)

Por defecto todos los botones que pertenecen a la misma se comportan los padres como si fueran parte del mismo grupo exclusivo botón . Después de haber seleccionado uno, no podrá volver a tener todos los botones desactivados.

Una solución es averiguar qué botón está marcado, y para ese botón haga lo siguiente

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

Tome un vistazo a estos enlaces para obtener más información:

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

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

+0

el siguiente código funciona con un problema: – user1182217

+0

el siguiente código funciona con un problema: 'theSelectedButton -> setCheckable (falso); thsSelectedButton-> setChecked (false); theSelectedButton-> setCheckable (true); 'El problema es que el botón de opción previamente seleccionado aparece cuando se selecciona un nuevo botón de opción. ¿Cómo evitaría esto? por favor guíame. – user1182217

+0

¿Podría agregar su código actualizado a la pregunta? – Kristofer