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 :

Remplissage des page d'un QTabWidget


Sujet :

Qt

  1. #1
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut Remplissage des page d'un QTabWidget
    Bonjour à tous,

    J'ai créé, sous Designer, une petite QDialog contenant entre autre un QTabWidget. Par la suite, dans le code, je remplis et j'ajoute des pages à mon QTabWidget.

    Le problème que je rencontre est le suivant : je n'arrive pas à remplir la première page du QTabWidget, celle générée automatiquement sous Designer.

    Ci-dessous le code ou j'ajoute les pages à mon QTabWidget et ou j'insère d'autres widgets pour la page concernée. Ce code est inclus dans une boucle, d'où la variable pageIndex, qui n'est autre que l'indice de la page du QTabWidget à laquelle on souhaite ajouter du contenu.

    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
     
    if(pageIndex > 0) 
         win->tabWidget2->insertTab(new QWidget(win->tabWidget2), id) ;
    else
         win->tabWidget2->setTabLabel(win->tab, id) ;
     
    QWidget *page = win->tabWidget2->page(pageIndex) ;
    QVBoxLayout *layCurPage = new QVBoxLayout(page) ;
     
    QHBoxLayout *layDate = new QHBoxLayout(layCurPage) ;
    QLabel *lblDate1 = new QLabel("Lizenz dauert : ", page ) ;
    layDate->addWidget(lblDate1) ;
     
    QLineEdit *txtDateStart = new QLineEdit(page ) ;
    txtDateStart->setReadOnly(true) ;
    layDate->addWidget(txtDateStart) ;
     
    QLabel *lblDate2 = new QLabel("bis", page ) ;
    layDate->addWidget(lblDate2) ;
     
    QLineEdit *txtDateEnd = new QLineEdit(page) ;
    txtDateEnd->setReadOnly(true) ;
    layDate->addWidget(txtDateEnd) ;
    Merci d'avance pour vos remarques et suggestions. Le code n'est évidemment pas complet, et si vous avez besoins d'information supplémentaire n'hésitez pas à le signaler.

  2. #2
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Pour ceux que ça intéresse, j'ai contourné le problème en créant mes onglets à la suite de celui existant par défaut, que je supprime à la fin de ma méthode.

    Ca s'apparente à du bricolage mais je n'ai pour l'instant pas d'autres solutions en vue.

    Je souhaiterais tout de même savoir pourquoi mon code précédent ne me permet pas d'éditer la première page de du QTabWidget, donc si quelq'un a une idée je reste preneur.

  3. #3
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Bon, finalement j'aurais été le seul à poster sur mon propre topic
    Bref, je pense qu'il s'agissait d'un problème de rafraîchissement de la page du QTabWidget, un appelle de la méthode show résout finalement le problème.

    En espérant que ça puisse aider quelqu'un...

  4. #4
    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, j'ai regarde tres rapidement ton code, et je ne vois pas d'appel de la methode addTab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int addTab ( QWidget * page, const QString & label )
    Moi aussi j'utilise Qt Designer, mais il n'est pas du tout pratique pour certaines choses comme la. Donc ce que je fais en general, c'est dans le constructeur de la fiche qui contient le QTabWidget, je supprime (delete) le premier onglet.

    Ensuite, Qt Designer me sers a creer mes QWidget qui seront les pages (onglets) de ce QTabWidget.

    normalement, le QTabWidget ne contient qu'un seul onglet, donc tu peux faire :
    _verifier que le QTabWidget ne contient pas d'onglets (mais il en contiendra un) avec la methode count().
    _Ensuite, tu devrais avoir en retour de count la valeur '1'. Tu vas donc effacer (delete) la page actuelle. pour cela tu as plusieurs solutions :
    * QWidget * QTabWidget::widget ( int index ) const, pratique car elle te retourne un pointeur directement sur la page actuelle.
    * QWidget * QTabWidget::currentWidget () const

    tu peux aussi te faire un boucle sur le nombre d'onglets presents(normalement un seul cree par designer) et faire un delete a chaque tour en verifiant avec count() qu'il n'y en a plus.

    a+

  5. #5
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Salut, merci pour ton intervention.

    Salut, j'ai regarde tres rapidement ton code, et je ne vois pas d'appel de la methode addTab
    Trop rapidement peut être , je fais un insertTab tout en haut de mon code.


    tu peux aussi te faire un boucle sur le nombre d'onglets presents(normalement un seul cree par designer) et faire un delete a chaque tour en verifiant avec count() qu'il n'y en a plus.
    Oui, j'ai opté pour cette solution finalement.

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

Discussions similaires

  1. activer/désactiver la compression GZIP des pages
    Par iubito dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 20/08/2008, 21h35
  2. Réponses: 10
    Dernier message: 10/06/2004, 16h20
  3. [jsp] Inclure des pages ASP et ASP.NET
    Par olive.m dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 06/05/2004, 12h41
  4. Empécher la sélection du texte des pages dans un WebBrowser
    Par DevelOpeR13 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 05/06/2003, 18h36
  5. Réponses: 2
    Dernier message: 03/10/2002, 17h24

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