web-dev-qa-db-fra.com

QGroupBox border

Après avoir cherché pendant un certain temps, je me suis aperçu que la propriété StyleSheet était un moyen de définir une bordure visible sur une zone de groupe. J'ai ajouté:

border: 2px solid gray;

mais il y a quelques problèmes.

1) Tout ce qui se trouve dans la zone de groupe hérite également de ce paramètre!

2) Il manque un petit trou/morceau à la frontière près du titre.

Voici une photo de ce dont je parle: alt text

Quelqu'un sait comment faire cela correctement?

Merci,

David

17
David Doria

Le premier problème est assez simple. Lorsque vous ajoutez une feuille de style à un contrôle, il propage automatiquement le style à tous les widgets enfants. Cependant, vous pouvez limiter l'utilisation de la feuille de style de plusieurs manières. Vous pouvez spécifier le type de contrôle que vous souhaitez appliquer à la feuille de style. Exemple:

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

Cette feuille de style ne sera définie que sur les zones de groupe. Cependant, si vous mettez une deuxième zone de groupe à l'intérieur de celle-ci, le style se propage également à celle-ci. Ce qui peut être bon ou mauvais.

Une autre méthode consiste à spécifier spécifiquement le nom d'objet du widget auquel vous appliquez le style. Exemple:

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

Cela appliquera uniquement le style à une zone de groupe avec un nom d'objet MyGroupBox.

Pour ce qui est de l'espace, cela se produit parce que le titre est tracé au-dessus de votre bordure. Vous pouvez également ajouter une section à votre feuille de style pour modifier le titre de votre zone de groupe. Cela inclut la définition de l'arrière-plan sur transparent et le déplacement du titre vers le contenu de votre coeur.

Exemple: votre titre sera placé dans le coin supérieur gauche de la zone de groupe, juste à l’intérieur de votre bordure, sans espace.

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

cela a fonctionné pour moi sur Qt 5.1.

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

Elimeléc

1
zibetto

Spécifiez un sélecteur pour le style de zone de groupe, tel que:

QGroupBox
{
     border: 2px solid gray;
}

Pour ce qui est de l’écart, vous pouvez probablement résoudre ce problème en définissant un remplissage. Vérifiez la documentation ici .

0
Arnold Spence