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

Qt Discussion :

Personnaliser les QMessageBox


Sujet :

Qt

  1. #1
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut Personnaliser les QMessageBox
    bonjour,

    Je souhaite savoir s'il est possible de personnaliser les fenêtres affichées par la fonction QMessageBox (information par exemple).

    J'aimerai changer les couleurs de la fenêtre, masquer la barre de menu de la fenêtre.

    Est-il possible d'assombrir le reste de l'écran autour de la fenêtre ?

    Est- il possible de définir un délai avant fermeture de la fenêtre ?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Citation Envoyé par LeonCosnyd Voir le message
    • J'aimerai changer les couleurs de la fenêtre, masquer la barre de menu de la fenêtre.
    • Est-il possible d'assombrir le reste de l'écran autour de la fenêtre ?
    • Est- il possible de définir un délai avant fermeture de la fenêtre ?
    Changer les couleurs, polices etc c'est possible avec les stylesheet. Exemple : http://stackoverflow.com/a/28464085/6165833
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    QMessageBox {
        background-color: #333333;
    }
    QMessageBox QLabel {
        color: #aaa;
    }
    Pour le reste je ne pense pas que ce soit possible, il va falloir coder ta propre boîte de dialogue en héritant de QDialog ou directement de QWidget.
    Le délai de fermeture peut être simulé en utilisant un QTimer, et en fermant ta fenêtre dans le code.
    Par contre pour assombrir le reste de l'écran, ça dépend de l'OS.

    Mais si ce que tu veux ressemble plutôt à un message en pop-up non cliquable, tu devrais plutôt créer ton propre widget qui prend toute ta fenêtre et qui est positionné par dessus ton contenu en absolu, avec un fond sombre transparent, et un QLabel en son centre avec un fond opaque.

  3. #3
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Merci pour la réponse !

    J'ai effectivement essayé de créer ma propre fenetre QWidget(). J'arrive à faire ce que je souhaite mais je rencontre le problème suivant :

    1) Ma fenetre QWidget
    + : s'affiche en plein écran (pas de barre de titre, pas de barre de menu, pas de barre de tache) Uniquement ma fenetre en plein écran.
    - : Je voudrais que celle-ci soit modale et qu'elle puisse renvoyer une valeur à la fenetre appelante.... Je n'y arrive pas.

    2) Ma fenetre QDialog :
    + : fenetre bloquante, permet de renvoyer une valeur à la fenetre appelante qui attend la fin de ma QDialog
    - : la fenetre ne s'affiche pas en plein écran. il reste une zone au niveau de la barre de titre. Impossible à masquer ! (du moins j'ai pas trouvé).

    Auriez-vous une idée ?

  4. #4
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Pour QWidget :
    On peut le rendre modal http://doc.qt.io/qt-5/qwidget.html#modal-prop
    Pour récupérer des données, tu peux créer un signal émis quand l'utilisateur clique sur Ok ou autre, et y connecter un slot de la fenêtre appelante

    Pour QDialog, tu as essayé avec showFullScreen ? Si oui, c'est peut-être une limitation de l'OS...

  5. #5
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Parfait ça !

    Pour le QDialog oui j'utilise bien le showFullScreen J'ai réussi en bidouillant à l'initialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QRect monEcran = this->geometry();
    this->setGeometry(QRect(0,0,monEcran.width(),monEcran.height()));
    Mais la solution d'utiliser un QWidget avec un signal est a tester ! Je te dis ça dès que j'ai un retour !

    Encore merci.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/08/2006, 17h10
  2. [FLASH MX2004] Personnaliser les champs de saisie?
    Par Rei Itchido dans le forum Flash
    Réponses: 5
    Dernier message: 21/03/2006, 17h45
  3. [CSS] personnaliser les boutons des balises INPUT
    Par Leviathan_72 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/11/2005, 15h22
  4. Personnaliser les pages d'erreurs
    Par Jeweller dans le forum XMLRAD
    Réponses: 3
    Dernier message: 03/06/2004, 12h26
  5. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    Réponses: 10
    Dernier message: 09/10/2003, 12h53

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