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 :

Création de fenêtre personnalisée [Tutoriel]


Sujet :

Qt

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 140
    Points
    140
    Par défaut Création de fenêtre personnalisée
    Bonjour à toutes et à tous!

    J'ai l'immense plaisir de vous annoncer que mon tutoriel est terminé.

    Pour en reprendre les grandes lignes, cet article retrace une manière possible (et j'espère une bonne) de réaliser une fenêtre personnalisée avec la bibliothèque Qt.

    Une "fenêtre personnalisée" qu'est-ce que c'est?
    C'est une fenêtre dont l'ensemble, donc pas juste le contenu mais aussi les bordures, la barre de titre ..., est rendu au travers des mécanismes de Qt, et ne repose plus donc sur le window manager sous-jacent. Autre intérêt, celà permet de créer des fenêtres de la forme que l'on souhaite.

    Il sera donc question de mettre en place :
    • Le dessin d'une fenêtre non rectangulaire
    • Redéfinir une barre de titre
    • Ajouter les boutons standard type agrandir, ...
    • Ajouter le déplacement de la fenêtre



    J'avais aussi quelques questions :
    Avez-vous déjà personnalisé votre fenêtre et Comment ?
    Que pensez-vous de cette manière de faire ?


    Le tutoriel est ici : http://qt.developpez.com/tutoriels/b.../customwindow/

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Très bon tutoriel
    Une très bonne présentation d'une des possibilités de customization que permet Qt.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 140
    Points
    140
    Par défaut
    Merci!
    Et merci à toi pour avoir relayé toute l'info .

  4. #4
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    En effet, vraiment très bon tutoriel.
    Tu poses pas mal de questions à la fin du tutoriel. Tu va faire une suite ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 140
    Points
    140
    Par défaut
    Merci!

    Je ne pense pas faire une suite, les questions posées dépassent le cadre d'un simple tutoriel à mon avis. Et puis, j'ai déjà du mal à faire progresser mon projet perso, je manque de temps... Mais bon c'est l'été, l'hiver sera peut-être plus propice à resté enfermé devant un PC .

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    démarche pas à pas très didactique! merci pour ton travail.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [image] bouton reduire, agrandir, fermer
    Bonjour,

    J'ai un soucis sur le tutoriel, j'ai bien reussi tout le tuto ca s'affiche bien (je le trouve bien construit) seulement je n'arrive pas a remplacer la partie ou tu dessine les bouton de base a savoir réduire,agrandir, fermer par mes propres images j'ai utilisé le code si dessous a la place de tout ton code de dessin (mais rien ne s'affiche =( ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
             QLabel *maxi = new QLabel(this);
    	 maxi->setPixmap(QPixmap("medias/maximize.png")); // où media serait un sous répertoire du répertoire d'exécution
    	 maxi->resize(23, 19);
    	 maxi->move(549,5);
    pourrait on m'aider merci

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai quelques problèmes avec le tuto, comme l'initialisation du QLabel m_Title par exemple.

    Cependant, le fichier source n'est plus disponible et donc je peut pas faire grand chose.

    Serait-il possible de le remettre en ligne ou de me l'envoyer svp?

    Merci d'avance! ^^

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour ;

    En suivant le tuto, je rencontre un problème dans la partie ajout des boutons standards. Quand je compile le code, il me retourne une erreur en signalant que m_Minimize, m_Maximize, m_Close n'est pas déclarer dans la partie signaux et slot qui relie les boutons réduire maximiser, fermer la fenêtre. Si quelqu'un peut m'éclaircir comment éradiquer le problème. Merci à vous tous.

  10. #10
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2016
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Problème réglé
    Cet article a déjà 7 ans mais je tiens tout de même à éclairer les lanternes de ceux qui qui ça ne fonctionne pas
    Vous devez tous avoir le bug comme quoi "m_Quit, m_Minimize, et m_Maximize ne sont pas déclarés" . Pour les plus logiques de vous, vous avez surement pensé qu'il suffisait de les déclarer en temps que WindowButton avec le ButtonState leur correspondant : dans le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WindowButton *m_Minimize;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Minimize= new WindowButton(WindowButton::BUTTON_MINIMIZE, this);
    dans WindowTitleBar.cpp.
    Moi, en les déclarants en temps que pointeur de cette manière, j'ai enlevé l'esperluette des connects :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    connect(m_Minimize, SIGNAL(clicked  ()),
                   this      , SLOT  (Minimized()));
    Bon, ça, c'est facile, mais malheureusement ça ne suffit pas. Si on compile, on ne voit que le bouton Quit, et il est tout moche. Pour résoudre ce bug, J'ai créé un QHBoxLayout. Pensez a l'include dans le .h Code du .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QHBoxLayout *m_layoutTitleBar;
    et du cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_layoutTitleBar = new QHBoxLayout(this);
    Pour les débutants (que faites vous là pauvres fous ) On assigne un layout horizontale au WindowTitleBar.
    Ensuite on défini la taille des boutons avec la méthode setFixedSize. Dans le WindowTitleBar.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int size=20;
        m_Minimize->setFixedSize(size,size);
        m_Maximize->setFixedSize(size,size);
        m_Close->setFixedSize(size,size);
    Enfin, on ajoute les différents widgets dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    m_layoutTitleBar->addWidget(&m_Title);
        m_layoutTitleBar->addWidget(m_Minimize);
        m_layoutTitleBar->addWidget(m_Maximize);
        m_layoutTitleBar->addWidget(m_Close);
    Et voilà, tout bête, mais quand c'est pas expliqué, on s'arrache les cheveux ! Bonne prog

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Informaticien
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    moi, aussi j'ai un petit sousci dans les lignes d'initialisation du pointeur *m_Cache,
    j'ai l'initialisé ainsi: QPixmap *m_Cache=NULL; mais ça me renvoies toujours une erreur segmentation, dans les lignes de DrawPixmap, est ce que quelqu'un pourais m'aider svp? si ça vous interresser je peux uploder le code source.

  12. #12
    Candidat au Club
    Homme Profil pro
    Chauffeur PL (44T)
    Inscrit en
    Août 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chauffeur PL (44T)
    Secteur : Transports

    Informations forums :
    Inscription : Août 2011
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par mesa2018 Voir le message
    moi, aussi j'ai un petit sousci dans les lignes d'initialisation du pointeur *m_Cache,
    j'ai l'initialisé ainsi: QPixmap *m_Cache=NULL; mais ça me renvoies toujours une erreur segmentation, dans les lignes de DrawPixmap, est ce que quelqu'un pourais m'aider svp? si ça vous interresser je peux uploder le code source.
    Bonjour dans le .h il ne faut pas initialiser ta variable mais tu le fais dans ton .cpp

Discussions similaires

  1. Création d'une fenêtre personnalisée
    Par dourouc05 dans le forum Téléchargez
    Réponses: 3
    Dernier message: 06/04/2014, 17h48
  2. [VC++6]Créations de fenêtres et objets GDI
    Par Yoyo@ dans le forum MFC
    Réponses: 20
    Dernier message: 10/07/2005, 16h12
  3. Création de fenêtres sans icone dans la barre des taches
    Par bruce_will dans le forum Windows
    Réponses: 2
    Dernier message: 06/12/2004, 04h29
  4. Problème de création de fenêtre
    Par tomateauketchup dans le forum DirectX
    Réponses: 1
    Dernier message: 08/06/2003, 19h42

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