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 :

Récupérer l'index d'un onglet dans un QTabWidget


Sujet :

Qt

  1. #1
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut Récupérer l'index d'un onglet dans un QTabWidget
    Bonjour,

    Je viens vous demander un peu d'aide car je bloque sur une chose qui parait anodine en soit, mais qui me pose problème dans le sens où je n'arrive pas à la réaliser
    Je souhaite, comme indiqué dans le titre, récupéré l'index d'un onglet, de manière à quand celui est l'onglet courant, rendre visible ma fenêtre dock...

    Voici le code que j'ai établi pour cela (ça ne fonctionne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void MainWindow::on_tabWidget_currentChanged()
    {
    	if (ui->tabWidget->currentPageIndex() == 0)
    		dock->setVisible(true);
    	dock->setVisible(false);
    }
    J'ai bien évidemment tenté plein de valeurs différentes pour mon currentPageindex()... J'ai également essayé avec les méthodes currentIndex() et currentWidget() mais rien n'y fait...
    J'en fais probablement de très mauvaises utilisations...

    A l'ouverture de mon interface graphique, le dockWidget est d'office affiché car je suis sur l'onglet voulu au début, mais quand je change d'onglet, il disparait bien, donc on passe bien dans la méthode... Quand je reviens sur l'onglet de base, le dock devrait revenir mais non...

    Si vous pouviez m'aider un petit peu...

    A noter : tabWidget est ma fenêtre à onglet, ui ma fenetre en elle-même et dock mon QdockWidget (même si tout ça parait logique, je vous le précise au cas où )

    Merci à vous

  2. #2
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut
    Re bonjour

    Après plusieurs (longues) heures de recherche à ce sujet, j'ai trouvé la solution à mon problème....
    Le code le résolvant est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (ui->tabWidget->tabText(ui->tabWidget->currentIndex()) == "Evolution")
    		dock->setVisible(true);
    	else
    		dock->setVisible(false);
    En gros, je vais chercher le titre de mon onglet grâce à la méthode tabText(QString) de la classe QTabWidget, en lui passant comme paramètre le titre de l'onglet courant, et le compare avec le titre de l'onglet que je veux choisir.
    Si ce test est bon, je rends visible mon dockWidget, et invisible sinon

    Ceci pourra peut être servir, si des gens rencontrent le même problème que moi

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    pourquoi ne pas utiliser tyout simplement tabWidget->currentIndex() ?

  4. #4
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut
    currentIndex() me retourne un entier, et je n'ai pas su l'utiliser correctement...
    Je ne sais pas si le premier onglet a pour indice 0, 1, 2 ou je ne sais pas quoi, en tout cas j'ai fait pas mal de tests avec currentIndex() mais sans succès...
    J'ai trouvé cette technique là, ça fonctionne très bien, alors bon

    C'est peut-être pas la technique la plus optimisée, mais ce n'est pas mon but pour le moment

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    oui ton bout de code marche mais c'est se compliquer les choses alors que currentIndex() te renvoi direct l'entier correspondant à ton onglet, le premier à pour indice zéro

  6. #6
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut
    J'avais essayé mais ça n'avait pas fonctionné...
    Effectivement, je viens de re-tester, et ça fonctionne...

    Bizarre, j'ai dû mal utiliser la méthode au début je ne sais pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (ui->tabWidget->currentIndex() == 0)
    		dock->setVisible(true);
    	else
    		dock->setVisible(false);
    Merci à toi

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

Discussions similaires

  1. Récupérer l'index d'une valeur dans un ndArray
    Par quedreuxa dans le forum Général Python
    Réponses: 3
    Dernier message: 18/06/2010, 17h00
  2. Choisir l'index d'un onglet dans un tabcontrol
    Par Chacha35 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/11/2009, 10h53
  3. Récupérer l'évenement "changement d'onglet" dans un JTabbedPane.
    Par minanoun dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 06/04/2009, 22h10
  4. Récupérer l'index d'un enregistrement dans une table
    Par lolita4882 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/04/2008, 21h33
  5. Récupérer l'index de l'onglet active d'un contrôle SSTab
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/10/2007, 17h52

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