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 :

SLOT(currentIndexChanged(int)) de QComboBox

  1. #1
    Invité
    Invité(e)
    Par défaut SLOT(currentIndexChanged(int)) de QComboBox
    Bonjour à tous,

    Dans une QDialog, j'ai une QCombobox combobox et une QGroupBox groupbox.

    Je voudrais que groupbox soit cachée ou affichée selon l'item qui est selectionné dans combobox.

    Mais voilà, ça en marche pas , rien ne se passe lorsque je fais défiler la lsite des items dans ma boite de dialogue.

    Connections signal/slot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public:
        void setupUi(QDialog *startWindow)
        {
            ...
            QObject::connect(this->comboBox, SIGNAL(currentIndexChanged(int)), this->groupBox, SLOT( displayPlateauParam(int)));
            ...
        }
    Déclaration de mon slot :

    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
    	public Q_SLOTS:
     
    		void displayPlateauParam(int iCurIdx)
    		{
    			//int curIdx=comboBox->currentIndex();
     
    			switch (iCurIdx)
    			{
    			case 0:
    				this->groupBox->show();
    				break;
    			case 1:
    				this->groupBox->hide();
    				break;
    			default:
    				break;
    			}
    		}
    Quelqu'un peut m'expliquer où est le probleme et comment le résoudre ?

    merci par avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Personne n'a d'idée sur la question ??

    Je pense que celà doit venir de la déclaration de la declaratino de mon slot car :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(this->comboBox, SIGNAL(currentIndexChanged(int)), this->groupBox, SLOT( hide());
    fonctionne alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(this->comboBox, SIGNAL(currentIndexChanged(int)), this->groupBox, SLOT( displayPlateauParam(int)));
    ne fonctionne pas.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Par défaut
    Où se trouve la méthode displayPlateauParam ? A mon avis pas dans this->groupBox. Je pense que tu dois avoir un message d'erreur renvoyé en sortie indiquant qu'aucun slot de ce nom n'existe.
    Je pense que cette méthode est dans la classe courante donc mets "this".

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse.
    displayPlateauParam() se trouve dans l'implementation de ma QDialog startWindow, donc pas dans this->groupBox mais dans this.

    Quand je remplace donc par this, j'obtiens ce message d'erreur :

    error C2665: 'QObject::connect'*: aucune des 2 surcharges n'a pu convertir tous les types d'arguments
    c:\qt\4.6.2\include\qtcore\../../src/corelib/kernel/qobject.h(198): peut être 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'
    c:\qt\4.6.2\include\qtcore\../../src/corelib/kernel/qobject.h(210): ou 'bool QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const'
    lors de la tentative de mise en correspondance de la liste des arguments '(QComboBox *, const char *, Ui_startWindow *const , const char *)'
    Mais avant je n'avais pas ce message d'erreur.

    Je remet le schéma (simplifié) de ma classe car je ne suis pas sûr d'être clair :

    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
     
    class Ui_startWindow
    {
    public:
        QComboBox *comboBox;
        QGroupBox *groupBox;
     
        void setupUi(QDialog *startWindow)
        {
            comboBox = new QComboBox(startWindow);
            groupBox = new QGroupBox(startWindow);
     
            //cette connection produit le message d'erreur
    	QObject::connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT( displayPlateauParam(int)));
        }
     
    public Q_SLOTS:
     
    	void displayPlateauParam(int iCurIdx)
    	{			
    		switch (iCurIdx)
    		{
    		case 0: groupBox->show();	break;
    		case 1: groupBox->hide();	break;
    		default: break;
    		}
    	}

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Par défaut
    A mon avis c'est parce que Ui_startWindow ne dérive pas de QObject.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Yes !!! Ca marche.

    En fait, ma fenetre a été créée avec QtCreator, du coup elle ne dérivait pas de QDialog, j'ai aussi rajouté la macro QObject.

    Merci bien pour ton aide , je me méfierai la prochaine fois que j'utiliserai QtCreator.

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

Discussions similaires

  1. [.COM] Réserver de la RAM fct 48h int 21h
    Par bulerias dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 06/12/2010, 14h33
  2. calcul melangeant int et long int ?
    Par ThR dans le forum C
    Réponses: 2
    Dernier message: 06/01/2003, 01h13
  3. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37
  4. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07
  5. Les INT en mode protégé
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 05/12/2002, 16h13

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