2011-05-11 21 views
7

Necesito tener una casilla de verificación como control donde los estados marcados y no marcados usan un gráfico personalizado. He revisado todos los documentos de QToolButton y QCheckBox, junto con QIcon, pero no he podido encontrar ninguna combinación que haga lo que quiero.Qt casilla de verificación/herramienta con iconos personalizados/distintos de verificación/desmarcado

Solo quiero usar un ícono (pixmap en realidad) en el estado no verificado, y uno diferente en el estado verificado.

Parece que debería ser fácil, pero la solución (a excepción de un control personalizado) me está eludiendo.


He intentado usar una hoja de estilo, así, y QToolButton:checked con un tipo de obras background-image pero no puedo obtener el diseño correcto - no está posicionada/tamaño como con un icono.

Respuesta

15

Use :: indicator sub-item. el código de abajo funciona excelente para mí ...

QCheckBox::indicator { 
    width: 18px; 
    height: 18px; 
} 

    QCheckBox::indicator:checked 
    { 
    image: url(.../Checkbox_checked_normal.png); 
    } 
    QCheckBox::indicator:unchecked 
    { 
    image: url(.../Checkbox_unchecked_normal.png); 
    } 

    QCheckBox::indicator:checked:hover 
    { 
    image: url(.../Checkbox_checked_hovered.png); 
    } 
    QCheckBox::indicator:unchecked:hover 
    { 
    image: url(.../Checkbox_unchecked_hovered.png); 
    } 
    QCheckBox::indicator:checked:pressed 
    { 
    image: url(.../Checkbox_checked_pressed.png); 
    } 
    QCheckBox::indicator:unchecked:pressed 
    { 
    image: url(.../Checkbox_unchecked_pressed.png); 
    } 
    QCheckBox::indicator:checked:disabled 
    { 
    image: url(.../Checkbox_checked_disabled.png); 
    } 
    QCheckBox::indicator:unchecked:disabled 
    { 
    image: url(.../Checkbox_unchecked_disabled.png); 
    } 
2

Esto se debe introducir como una hoja de estilo. Haga esto a través del editor de diseño haciendo clic derecho en la casilla de verificación y seleccionando "Cambiar hoja de estilo ...".

Cuestiones relacionadas