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 :

QTreeWidget et QTreeItemWidget


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut QTreeWidget et QTreeItemWidget
    Salut tout le monde ! je m'appelle Andy ...
    Débutant en Qt, j'ai un petit souci avec un projet que je travaille ces temps ci ....
    le problème c'est avec le QTreeWidget et le QTreeItemWidget. Lorsque je cherche a créer une connexion pour un élément de mon treeWidget (treeItemWidget) , le SLOT s'applique à tous les éléments enfants de mon treeWidget (treeItemWidget), or moi je veux une interaction unique pour chacun de mes treeItemWidget.

    Voici mon code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject:: connect (ui->treeWidget, SIGNAL(itemPressed(QtreeItemWidget *item,int)), this, SLOT(close()));
    Ce code ferme ma fenêtre à chaque cilc sur n'importe quel enfant de mon treeWidget.

    Je ne sais pas si c'est la bonne pratique ... mais en tout cas, ce que moi je veux savoir c'est comment faire une connexion avec un seul QTreeItemWidget.

    Merci de me répondre aussi tôt.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Pour cela, je vous conseillerais plutôt de ne pas appeler directement close() mais plutôt une méthode nommée par exemple onItemClicked() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MyClass:onItemPressed(QTreeItemWidget *item, int)
    {
         if (item == myItem) // ou on peut aussi faire appel à text() pour faire une comparaison des textes
             close();
    }
    Bonne journée,
    Louis

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut J'ai essayé ... Malheureuseusement ....
    Salut Louis ! Je te remercie d'abord d'avoir répondu à ma préoccupation.

    J'ai beau essayé ce que tu m'as conseillé de faire about mon projet mais cela me génère toujours une erreur ....

    Voici mon code .h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void on_stat_Pressed(QTreeItemWidget *item, int);

    Voici mon .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void  Fen_Principale::on_stat_Pressed(stat, int)
    {
        if(stat->isSelected())
        {
            QMessageBox::critical(this, "C'est Bon !" , "Done !!!! ");
            Close();
        }
    }


    Voici le message du compilateur :

    "error: variable or field `on_stat_Pressed' declared void"

    "error: expected `;' before '(' token"

    Je peux peut être t'envoyer le .cpp et le .h de mon projet par mail pour que ça soit plus clair (les explications).

    Merci d'avance.

    Andy.

  4. #4
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Que se passe-t-il si vous changez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Fen_Principale::on_stat_Pressed(stat, int)
    {
        if(stat->isSelected())
        {
            QMessageBox::critical(this, "C'est Bon !" , "Done !!!! ");
            Close();
        }
    }
    En :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Fen_Principale::on_stat_Pressed(QTreeItemWidget *stat, int)
    {
        if(stat->isSelected())
        {
            QMessageBox::critical(this, "C'est Bon !" , "Done !!!! ");
            close();
        }
    }
    Bonne journée,
    Louis

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Louis !!!!

    Idem ! Ca génère toujours le même message ....

    Andy.

  6. #6
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    Pouvez-vous nous montrer les lignes de code impactées et l'erreur complète, s'il vous plait ? Avec les lignes, notamment.

    Bonne soirée,
    Louis

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Louis,


    Au fait l'erreur provient de la déclaration de la méthode "on_stat_pressed" ça écrit :

    error: variable or field `on_stat_Pressed' declared void"
    
    "error: expected `;' before '(' token"
    Je peux avoir un e-mail ou je peux t'envoyer l'intégralité de mon .h et .cpp ? On se comprendra mieux.

    Merci d'avance.

    Bonne soirée.

  8. #8
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    En général, quand on poste une question sur un forum, il faut être à même de montrer un minimum, le cas échéant le fait de répondre n'apporte pas des masses aux autres qui lisent le topic après. C'est pour cette raison que les règles du forum (http://club.developpez.com/regles/#LIV-J) indiquent que le fait de demander d'envoyer des sources par mail/autre n'est pas approprié.

    De mon point de vue, votre problème vient du fait que vous ne notez pas correctement vos types :

    Fichier .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Fen_Principale::on_stat_Pressed(QTreeWidgetItem *stat, int)
    {
        if(stat->isSelected())
        {
            QMessageBox::critical(this, "C'est Bon !" , "Done !!!! ");
            close();
        }
    }
    Fichier .h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <QTreeWidgetItem>
    ...
     
    class Fen_Principale : public ...
    {
    public:
        // ...
     
    public slots:
        void on_stat_Pressed(QTreeWidgetItem *stat, int);
    };
    Même si vous voyez cette erreur, j'imagine que le compilateur doit dire quelque chose avant. Ce sont ces erreurs qui m'intéressent.

    Bonne soirée,
    Louis

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Salut !

    Bien bien, je comprends ... Sorry c'est ma première fois de postez sur un forum du genre.

    Au fait le contenu de mon .h est :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #ifndef FEN_PRINCIPALE_H
    #define FEN_PRINCIPALE_H
     
    #include <QtGui/QMainWindow>
    #include <QAction>
    #include <QMenuBar>
    #include <QMenu>
    #include <QTreeWidgetItem>
     
    namespace Ui
    {
        class Fen_Principale;
    }
     
    class Fen_Principale : public QMainWindow
    {
        Q_OBJECT
     
        public slots :
                 void on_stat_Pressed(QTreeItemWidget *stat, int);
     
        signals :
               void stat_signal();
     
    public:
        Fen_Principale(QWidget *parent = 0);
     
        ~Fen_Principale();
     
    private:
        Ui::Fen_Principale *ui;
        QMenuBar *menuBar;
        QMenu *menu_fichier,*menu_edition,*menu_affichage,*menu_apropo,*menu5;
        QAction *action_fichier1,*action_fichier2,*action_fichier3,*action_edition1,*action_edition2,*action_edition3,*action_affichage1,*action_affichage2,*action_affichage3;
        QTreeWidgetItem *stat ;
    };
     
    #endif // FEN_PRINCIPALE_H


    Le Contenu du .cpp est tellement trop que je ne sais le postez ici, voici mon slot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Fen_Principale::on_stat_Pressed(QTreeItemWidget *stat, int)
    {
        if(stat->isSelected())
        {
            QMessageBox::critical(this, "C'est Bon !" , "Done !!!! ");
            Close();
     
        }
    }
    L'erreur provient du .h sur la ligne ou je fait la déclaration de mon slot "on_stat_pressed", voici le message du compilateur :

    C:/Documents and Settings/Administrateur/Mes documents/EPSP_Admin/fen_principale.h:20: error: variable or field `on_stat_Pressed' declared void
    C:/Documents and Settings/Administrateur/Mes documents/EPSP_Admin/fen_principale.h:20: error: expected `;' before '(' token
    Si possible essaye de le copier chez toi (si tu as le Qt) et mieux comprendre ce message.

    J'attends ....

    Andy.

  10. #10
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonjour,

    Si vous remplacez "QTreeItemWidget" par "QTreeWidgetItem" dans les deux fichiers, et que vous remplacez "Close()" par "close()", que se passe-t-il ?
    Vous n'avez en théorie pas besoin de la ligne 35 de votre .h, si vous l'avez insérer pour tenter de fixer la compilation.

    Bonne journée,
    Louis

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Louis !

    Enfin le truc a marché après avoir fait ce que tu m'as dit en dernier et quelques petits reformulations de mon .cpp. Merci beaucoup !

    Andy.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 25/09/2009, 19h07
  2. QTreeWidget + couleur + taille
    Par nada114 dans le forum Qt
    Réponses: 3
    Dernier message: 06/03/2008, 15h17
  3. Réponses: 4
    Dernier message: 05/03/2008, 14h26
  4. Réponses: 9
    Dernier message: 20/01/2008, 15h16
  5. Réponses: 1
    Dernier message: 08/01/2008, 17h08

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