2011-10-25 15 views
7

Tengo un problema bastante extraño. Tengo un QWidget con QHBoxLayout en él. El diseño contiene dos QLabels. Quiero establecer un borde para este widget completo. Estoy usando la hoja de estilo:Qt 4: ¿Cómo establecer el borde exterior para QWidget para que sus widgets internos no se vean afectados?

"padding: 10px;" 
"border-style: solid;" 
"border-width: 3px;" 
"border-radius: 7px;" 

Pero aquí está el problema: este estilo se aplica a ambos QLabels y rompe completamente el diseño. Solo necesito que la ventana exterior tenga el borde, no las etiquetas. Alguna idea?

¡Gracias de antemano!

Respuesta

7

Uso

.QWidget 
{ 
    // your css rules 
} 

.QWidget se aplicará CSS sólo para las clases que son exactamente QWidget y no heredar QWidget

También puede use el selector de nombre de objeto

#YourWidgetObjectName 
{ 
    // your css rules 
} 

Ambas soluciones no aplican reglas a otros widgets (incluso a los que están dentro)

+0

Creo que debería ser QWidget, sin el punto. –

+5

QWidget without the dot indicará los widgets de ale que heredan QWidget. con dot incluye solo instancias de la clase QWidget en sí. http://doc.qt.nokia.com/4.7/stylesheet-syntax.html#selector-types –

7

Las hojas de estilo funcionarán recursivamente. Si aplica una hoja de estilo a una Aplicación, se aplicará a todos los widgets que contenga. ¿Entonces debe especificar a qué desea aplicar la hoja de estilo?

lógica debería ser algo como esto ..

QHBoxLayout#layoutbox { 
    background-color: red; 
    border-style: outset; 
    border-width: 2px; 
    border-radius: 10px; 
    border-color: beige; 
    font: bold 14px; 
    min-width: 10em; 
    padding: 6px; 
} 
+2

¿cómo puedo configurar la hoja de estilos? En Qt4.8, la clase QHBoxLayout no tiene una función llamada 'setStyleSheet()'. ¿Debo hacerlo de otra manera, o su respuesta solo se aplica a Qt5? – Wim

Cuestiones relacionadas