2010-11-29 29 views
17

Después de buscar por un tiempo, vi que la manera de establecer un borde visible en un grupo es utilizar la propiedad StyleSheet. He añadido:QGroupBox border

border: 2px solid gray; 

pero hay un par de problemas.

1) ¡Todo dentro del groupbox también hereda esta configuración!

2) El borde tiene un pequeño agujero/pieza que falta cerca del título.

Aquí está una imagen de lo que estoy hablando: alt text

Alguien sabe cómo hacer esto correctamente?

Gracias,

David

+1

he encontrado una respuesta adecuada a esta pregunta en éste: http://stackoverflow.com/questions/14582591/border-of-qgroupbox Ninguna de las respuestas publicadas aquí trabajó agradable para mi. – gluk47

Respuesta

31

El primer problema es bastante simple Cuando agrega una hoja de estilo a un control, automáticamente propaga el estilo a todos los widgets secundarios. Sin embargo, puede restringir el uso de la hoja de estilos de varias maneras. Puede especificar el tipo de control al que desea aplicar la hoja de estilo. Ejemplo:

QGroupBox { 
    border: 2px solid gray; 
    border-radius: 3px; 
} 

Esta hoja de estilo solo se configurará en cuadros de grupo. Sin embargo, si coloca un segundo cuadro de grupo dentro de este, el estilo se propagará también a este. Que puede ser bueno o malo

Otra forma es especificar específicamente el objectName del widget al que está aplicando el estilo. Ejemplo:

QGroupBox#MyGroupBox { 
    border: 2px solid gray; 
    border-radius: 3px; 
} 

Esto solo aplicará el estilo a un cuadro de grupo con un nombre de objeto de MyGroupBox.

En cuanto al espacio, está sucediendo porque el título se dibuja en la parte superior de su borde. También puede agregar una sección a su hoja de estilos para cambiar el título de su grupo de grupo. Esto incluye configurar su fondo como transparente, y mover el título al contenido de su corazón.

Ejemplo: Esto establecerá su título en la esquina superior izquierda del cuadro de grupo dentro de su borde, sin espacio.

QGroupBox::title { 
    background-color: transparent; 
    subcontrol-position: top left; /* position at the top left*/ 
    padding:2 13px; 
} 
+0

Excelente, ¡gracias! –

0

Especificar un selector para el estilo de grupo tales como:

QGroupBox 
{ 
    border: 2px solid gray; 
} 

En cuanto a la brecha, es probable que pueda arreglar esto mediante el establecimiento de un poco de relleno. Check the docs here.

1

esto funcionó para mí en Qt 5.1.

qApp->setStyleSheet("QGroupBox { border: 1px solid gray;}"); 

Elimelec