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 - Problème d'affichage des widgets

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut QTabWidget - Problème d'affichage des widgets
    Bonsoir à tous,
    J'ai créé une classe appelante "CallClass" qui hérite de QMainWindow
    Cette classe a un constructeur qui appelle la méthode createTabs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CallClass::createTabs()
    {
        m_tabWidget = new QTabWidget(this);
        m_tabWidget->addTab(new CGTab(), tr("CG Tab"));
        m_tabWidget->addTab(new TrmTab(), tr("TRM Tab"));
        setCentralWidget(m_tabWidget);
    }
    Cette méthode createTabs instancie un QTabWidget à l'intérieur duquel, je crée deux onglets. Ces deux onglets s'affichent bien mais le widget qui devrait être créé à l'intérieur de ces onglets (à travers les classes CGTab et TrmTab) ne s'affiche pas.

    Le code de la classe CGTab (identique à celui de la classe TrmTab) est le suivant :
    Code : 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
    26
    27
     
    #include <QtGui/QLabel>
    #include <QtGui/QVBoxLayout>
    #include <QtGui/QTreeView>
    #include <QtGui/QStandardItemModel>
     
    #include "CGTab.h"
     
    CGTab::CGTab(QWidget *parent) : QWidget(parent)
    {
        QTreeView *l_cgTreeView = new QTreeView;
        //l_cgTreeView->setRootIsDecorated(false);
        //l_cgTreeView->setAlternatingRowColors(false);
     
        QStandardItemModel *l_model = new QStandardItemModel(0, 3, l_cashGameTreeView);
        l_model->setHeaderData(0, Qt::Horizontal, QObject::tr("Subject"));
        l_model->setHeaderData(1, Qt::Horizontal, QObject::tr("Sender"));
        l_model->setHeaderData(2, Qt::Horizontal, QObject::tr("Date"));
     
        l_cgTreeView->setModel(l_model);
     
        QVBoxLayout *l_mainLayout= new QVBoxLayout;
        l_mainLayout->addWidget(l_cgTreeView);
        setLayout(l_mainLayout);
    }
     
    CGTab::~CGTab() {}
    J'ai également essayé d'afficher un simple QLabel mais j'obtiens le même résultat.

    D'avance merci pour votre aide

    Hervé

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    salut, sans vouloir faire l'odieux personnage, je jetterai personnellement un coup d'oeil a ton message lorsque tu l'auras edite pour mettre ton code dans les balises

  3. #3
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Code : 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
    CGTab::CGTab(QWidget *parent) : QWidget(parent)
    {
    QTreeView *l_cgTreeView = new QTreeView(this);
    //l_cgTreeView->setRootIsDecorated(false);
    //l_cgTreeView->setAlternatingRowColors(false);
    
    QStandardItemModel *l_model = new QStandardItemModel(0, 3, l_cashGameTreeView);
    l_model->setHeaderData(0, Qt::Horizontal, QObject::tr("Subject"));
    l_model->setHeaderData(1, Qt::Horizontal, QObject::tr("Sender"));
    l_model->setHeaderData(2, Qt::Horizontal, QObject::tr("Date"));
    
    l_cgTreeView->setModel(l_model);
    
    QVBoxLayout *l_mainLayout= new QVBoxLayout(this);
    l_mainLayout->addWidget(l_cgTreeView);
    //setLayout(l_mainLayout);
    }
    c'est mieux comme ça ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Bonjour,
    Ok, j'ai mis le code entre balises. Je ne savais pas, désolé
    Avec les modifs que vous m'avez proposé, cela ne s'affiche toujours pas.
    Sinon, pourquoi avez-vous mis le setLayout en commentaires ?

    Hervé

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par MacPro Voir le message
    tu as un problème de parent.
    non, le layout reparent les widget
    sinon, je ne voie pas trop.
    As tu regarder cette exemple?
    http://qt.developpez.com/doc/4.4/dialogs-tabdialog/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Oui, je m'en suis inspiré pour écrire ce code

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Bon, en ajoutant un layout le contenu du QTabWidget s'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     void CallClass::createTabs()
     {
        m_tabWidget = new QTabWidget;
        m_tabWidget->addTab(new CGTab(), tr("CG Tab"));
        m_tabWidget->addTab(new TrmTab(), tr("TRM Tab"));
     
        QVBoxLayout *mainLayout = new QVBoxLayout;
        mainLayout->addWidget(m_tabWidget);
        setLayout(mainLayout);
     
        setCentralWidget(m_tabWidget);
     }
    par contre, je ne vois pas bien pourquoi

    Hervé

  8. #8
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    il me semble que le centralWidget d'un QMainWindow doit être layouté, mais je ne saurais pas dire pour quelle raison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADSL] Problème d'affichage des pages
    Par adam22 dans le forum Dépannage et Assistance
    Réponses: 9
    Dernier message: 07/12/2005, 14h36
  2. Problème d'affichage des tables
    Par talere dans le forum Access
    Réponses: 6
    Dernier message: 24/10/2005, 13h02
  3. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58
  4. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07
  5. Réponses: 1
    Dernier message: 06/03/2003, 11h57

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