IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Comment arrondir les angles de la fenêtre de mon application ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut Comment arrondir les angles de la fenêtre de mon application ?
    Bonjour,

    J'utilise la méthode setStyleSheet pour personnaliser les widgets de mon application mais là je suis confronté à un petit soucis : je n'arrive pas à faire en sorte que les angles de ma fenêtre soient arrondis !

    Dans le constructeur de ma fenetre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);
    setStyleSheet("background-color: black; border-radius: 5px;");
    setWindowOpacity(0.85);
    setWindowTitle("test");
    setFocus();
    Avec ce code, ma fenêtre a un fond noir transparent mais les angles restent droits !
    Ma fenêtre hérite de QWidget mais quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setStyleSheet("QWidget{background-color: black; border-radius: 5px;}");
    Le bouton situé dans ma fenêtre a les angles arrondis mais pas ceux de ma fenêtre.

    Comment puis je faire pour y arriver ?

    Merci d'avance, à bientôt !

  2. #2
    Membre éprouvé
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Par défaut
    Pas sûr à 100%, mais essaye de voir ce que ça donne en ajoutant à ton qss:
    "border-style: solid; border-width: 1px;"

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Salut GreatTux,

    je viens d'essayer ta solution mais sans succès !

  4. #4
    Membre éprouvé
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Par défaut
    Re,

    Je pense que ça peut être une limitation due au fait que ton widget n'a pas de parent (c'est une fenêtre).
    Essaye de lui coller l'attribut suivant, ça lui ajoutera un canal d'alpha, donc permettra de rendre les coins transparents, càd arrondis;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setAttribute(Qt::WA_TranslucentBackground);

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Bonjour,

    Je viens d'essayer comme ceci mais rien n'y change !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);
    setAttribute(Qt::WA_TranslucentBackground);
    setStyleSheet("QWidget{background-color: black; border-style: solid; border-width: 1px; border-radius: 5px;}");
    setWindowOpacity(0.85);
    setFocus();
    le fond de ma fenêtre est transparent et tous les widgets à l'intérieur ont leurs angles arrondis alors que je souhaiterai que seule la fenêtre est ses angles arrondis !!!

  6. #6
    Membre éprouvé
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Par défaut
    Ok j'ai réussi de mon coté.

    J'ai créé une classe d'UI toute bête qui dérive de QWidget.
    Je ne sais pas si tu passes par un .ui, dans mon cas oui mais ça ne change rien. Dans ce .ui, j'ajoute un QWidget "widget".

    Voici le code du constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ui->setupUi(this);
    setWindowFlags(Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground);
    ui->widget->setStyleSheet("background-color: black; border-radius: 5px;");
    setWindowOpacity(0.85);
    setFocus();
    Note que c'est bien au QWidget "widget" que le style est appliqué.

    Concernant ton problème d'angles arrondis sur tes autres éléments la raison est simple: "Cascading Style Sheets". Ce qui signifie que tous les enfants du widget auquel tu appliques le style en hérite.
    Dans ton cas plusieurs solutions à ça. Soit tu tu utiles la syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    .QWidget
    {
    ...
    }
    Le style sera alors appliqué strictement aux objets de type QWidget et pas à ceux qui en hérite (ex QPushButton).
    Soit tu utilises la syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #widget
    {
    ...
    }
    Le style ne sera alors appliqué qu'à l'objet "widget"

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/03/2015, 17h31
  2. [C#] Comment arrondir les angles d'un Label avec borderRadius ?
    Par Anto03 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 29/09/2008, 15h47
  3. Arrondir les angles d'un widget gtk.Entry()
    Par Mysti¢ dans le forum GTK+ avec Python
    Réponses: 0
    Dernier message: 19/06/2008, 10h25
  4. Comment récupéré les données sur plusieurs fenêtres ?
    Par bon4000 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/09/2007, 17h58
  5. Peut-on arrondir les angles d'un fieldset ?
    Par leroidje dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/05/2007, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo