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 :

double clic sur un QlistView?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut double clic sur un QlistView?
    bonjour,
    j'ai faits une liste de fichier dans un dock ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    model = new QDirModel();
    CurPath= new QDir()
    tree = new QListView(this);
    tree->setRootIndex(model->index(CurPath->currentPath()));
    j'ai ajouter un bouton pour pouvoir remonter d'un niveau en créant mon propre slot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void DockExplorer::GoToParent()
    {
        if (CurPath->isRoot())
        {
            cout<<endl<<"Warning: ne peut remonter au parent car il semblerait qu'on soit dans le dossier root"<<endl;
            return;
        }
        cout<<endl<<"Path avant: "<<CurPath->path().toStdString()<<endl;
        CurPath->cdUp();
        cout<<endl<<"Path après: "<<CurPath->path().toStdString()<<endl;
     
        tree->setRootIndex(model->index(CurPath->path()));
    }
    et maintenant je cherche a descendre dans l'arborescence en double cliquant sur un dossier. je vois comment procèder pour naviger, mais je n'arrive pas à trouver quel signal il faut lire.
    Donc ma question est comment on réagit au double clic sur un item d'un QListView ?

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Le bon signal n'est pas dans QListView, mais dans sa classe parent, QAbstractView (comme souvent, prend l'habitude de regarder la hiérarchie ): doubleClicked (const QModelIndex &index)

  3. #3
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    merci, j'avais vu !Mais ma question était plutot comment m'en servir ?

    Par rapport a mon exemple j'ai essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(tree,SIGNAL(doubleClicked()),this,SLOT(mySlotTest()));
    mais lors de la compilation j'ai une erreur qui me dit que la class QListView ne possède pas de signal doubleClicked().

    J'ai une autre question, toujours par rapport au a ce problème lorsque j'arriverais a récupéré le signal doubleClicked, comment je fais pour connaitre les propriété de l'item qui a reçu le double clik ?

  4. #4
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Citation Envoyé par guiyomh Voir le message
    Par rapport a mon exemple j'ai essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(tree,SIGNAL(doubleClicked()),this,SLOT(mySlotTest()));
    mais lors de la compilation j'ai une erreur qui me dit que la class QListView ne possède pas de signal doubleClicked().
    En effet, ce signal n'existe pas. Relis la déclaration...

    Citation Envoyé par guiyomh Voir le message
    J'ai une autre question, toujours par rapport au a ce problème lorsque j'arriverais a récupéré le signal doubleClicked, comment je fais pour connaitre les propriété de l'item qui a reçu le double clik ?
    En utilisant l'argument qui t'es fourni?

  5. #5
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    ok, je comprends mieux mon erreur.

    il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(tree,SIGNAL(doubleClicked(QModelIndex)), this,SLOT(mySlot(QModelIndex)));

  6. #6
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Toujours pas, ça marche, mais c'est, disons, un effet de bord. C'est un lendemain de fête pour que tu n'arrives pas à lire correctement une signature?

  7. #7
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Si je dis ça, c'est que je te l'ai déjà dit. Faut pas prendre la mouche...
    Et comme pour tout signal, il faut omettre le nom de la variable. Cependant, si tu ne comprends pas pourquoi il est préférable d'utiliser une référence constante qu'une copie de l'objet, c'est pas une explication Qt qu'il te faut mais un cours de C++, et y'en a déjà plusieurs ici.

  8. #8
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    moi dans tout les tuto que j'ai lu, ils disent que dans le signal c'est le type de la variable qu'il faut passer et non une reference à la variable.

  9. #9
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Soit tu as mal lu, soit le tuto est à faire disparaître de la toile si ce n'est pas corrigé rapidement.

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par guiyomh Voir le message
    moi dans tout les tuto que j'ai lu, ils disent que dans le signal c'est le type de la variable qu'il faut passer et non une reference à la variable.
    soit donc :
    Le type de la variable, c'est tout, c'est pas un simple QModelView.

  11. #11
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Un type en C++ c'est un nom de classe/structure/type fondamental plus éventuellement & ou * et enfin avec des const éventuellement également.

  12. #12
    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 guiyomh Voir le message
    moi dans tout les tuto que j'ai lu, ils disent que dans le signal c'est le type de la variable qu'il faut passer et non une reference à la variable.
    Attention une reference sur la varaible non, ca ne compilera pas ("normalement"). Mais une reference const oui.
    Bon sans trop rentré dans les détails, c'est pour les connect entre thread ou il faut faire des copies, donc :
    reference : l'objet sera modifié => on ne peut faire de copie pour executer le slot plus tard.

    reference const, : l'objet ne sera pas modifié dans le slot => il autorisé de faire une copie de l'objet pour l'utiliser plus tard.

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

Discussions similaires

  1. ouverture d'un programme par double clic sur un fichier
    Par zieg18 dans le forum Visual C++
    Réponses: 6
    Dernier message: 12/07/2006, 10h02
  2. Double clic sur une feuille de données
    Par louroulou dans le forum Access
    Réponses: 7
    Dernier message: 14/06/2006, 11h33
  3. Réponses: 5
    Dernier message: 08/06/2006, 16h11
  4. écoute de touches, de double clics sur un JTable
    Par Nicool dans le forum Composants
    Réponses: 7
    Dernier message: 06/06/2006, 12h52
  5. comment autoriser le double clic sur un champ desactivé ?
    Par linou dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/04/2005, 17h23

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