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 :

QTabWidget et fenêtre qui n'apparait pas

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut QTabWidget et fenêtre qui n'apparait pas
    Bonjour

    Je débute sous Qt et j'ai un problème récurrent : mon code compile sans soucis, je lance le programme sauf que ma fenêtre n'apparait pas. Pourtant, mon gestionnaire des tâches n'indique bien que le programme est lancé. J'en conclue que quelque chose se passe mal à l'exécution. Seulement, je n'ai aucune idée de savoir quoi, et c'est toujours du bidouillage pour faire en

    sorte que la fenêtre s'affiche.

    Pour l'occasion, j'ai un problème avec un QTabWidget. J'ai une classe MyMainWindow, avec son fichier Cpp et son en-tête Hpp, et un fichier main ou j'appelle la classe. Les codes :

    Code MyMainWindow.hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #ifndef MY_MAIN_WINDOW_H
    #define MY_MAIN_WINDOW_H
     
    #include <QApplication>
    #include <QTabWidget>
    #include <QWidget>
     
     
    class MyMainWindow : public QWidget
    {
        public:
        // constructeur par defaut
        MyMainWindow();
     
        private:
        // tableau d'onglets
        QTabWidget *ongletsPrincipaux;
     
    };
     
    #endif


    Code MyMainWindow.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include "myMainWindow.hpp"
     
    MyMainWindow::MyMainWindow() : QWidget()
    {
        // Parametrage de la fenetre
        setFixedSize(230, 230);
        this->setWindowTitle("DiskDB : ma collection de disques !");
     
        // Creation du ableau d'onglets
        ongletsPrincipaux = new QTabWidget(this);
        ongletsPrincipaux->setGeometry(10,10,100,100);
     
        QWidget *onglet1 = new QWidget;
        ongletsPrincipaux->addTab(onglet1, "Accueil");
        QWidget *onglet2 = new QWidget;
        ongletsPrincipaux->addTab(onglet2, "Ajouter");
        QWidget *onglet3 = new QWidget;
        ongletsPrincipaux->addTab(onglet3, "Rechercher");
     
    }//MyMainWindow()


    Code main.hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <QApplication>
    #include "myMainWindow.hpp"
     
     
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        MyMainWindow fenetrePrincipale;
        fenetrePrincipale.show();
        return app.exec();
    }

    Ca compile bien, ça se lance, mais rien de s'affiche....


    En revanche, si je crée mon tableau d'anglais directement dans le main, comme ceci :
    Code qui marche : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <QApplication>
    #include "myMainWindow.hpp"
     
     
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        QTabWidget *ongletsPrincipaux;
        ongletsPrincipaux = new QTabWidget;
        ongletsPrincipaux->setGeometry(10,10,100,100);
     
        QWidget *onglet1 = new QWidget;
        ongletsPrincipaux->addTab(onglet1, "Accueil");
        QWidget *onglet2 = new QWidget;
        ongletsPrincipaux->addTab(onglet2, "Ajouter");
        QWidget *onglet3 = new QWidget;
        ongletsPrincipaux->addTab(onglet3, "Rechercher");
     
        ongletsPrincipaux->show();
     
        return app.exec();
    }
    et bien ça s'affiche correctement....




    Je suis preneur de tout conseil et explication ^^

    Merci !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 133
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Je crois que j'ai trouvé \o/

    Votre erreur est que la classe MyMainWindow doit hérité de QMainWindow et non de QWidget

    Voilà tout ( enfin j'espère )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    En fait, pas besoin d'utiliser QMainWindow. QMainWindow est un QWidget avec menus et d'autres choses. Mais on peut afficher un QWidget directement avec show().

    Chez moi, ton code affiche une fenêtre (win XP, Qt 4.7). Tu travailles sous quel OS ?

    Sinon, petite remarque : il ne pas juste donner le QWidget comme parent de ton QTabWidget. Il faut aussi l'afficher dedans. En général on utilise les layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QVBoxLayout* layout = new QVBoxLayout();
    layout->addWidget(ongletsPrincipaux);
    setLayout(layout);

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Sinon, petite remarque : il ne pas juste donner le QWidget comme parent de ton QTabWidget. Il faut aussi l'afficher dedans. En général on utilise les layout :
    C'est plutôt l'un ou l'autre. Quand on le définit avec un parent, on doit ensuite le placer à la main (setGeometry), mais il n'y a pas besoin de layout. Et quand on utilise un layout, on a pas besoin de définir le parent, cela se fait tout seul en interne.

Discussions similaires

  1. message d'info qui n'apparait pas
    Par stefano dans le forum WinDev
    Réponses: 5
    Dernier message: 03/12/2007, 12h21
  2. Elément qui n'apparait pas dans le SELECT
    Par mattyeux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/11/2007, 17h04
  3. [VS.NET]MenuStrip qui n'apparait pas
    Par LordBob dans le forum Visual Studio
    Réponses: 2
    Dernier message: 29/11/2006, 18h08
  4. Réponses: 5
    Dernier message: 12/11/2005, 09h45
  5. Problem fond qui n'apparait pas sous FF.
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/09/2005, 22h05

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