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 :

[Qt] ListView avec menu contextuel ?


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut [Qt] ListView avec menu contextuel ?
    Bonjour,

    Alors voilà je m'intéresse de près à QT. J'aimerais en fait afficher une liste de mp3 (par exemple) chargés à partir d'une base de donnée. Bon jusque là ça devrait être relativement simple.

    Mais, de plus, j'aimerais que l'utilisateur puisse interagir avec les éléments de la liste donc évidemment double clic mais surtout clic droit afin d'afficher un menu contextuel qui va lui permettre de lire la musique, de supprimer le fichier etc etc.

    Ca devrait être possible à faire non ? (Et si oui, j'aimerais deux-trois mots-clés qui me permettraient de trouver la doc nécessaire ^^)

    Merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    Pas très fréquenté mon petit post :'(.

  3. #3
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    il faut que ton appli intercepte le signal contextMenuRequested de ton QListView (automatiquement appelé quand tu cliques droit dessus) et l'associer à une fonction qui crée un QPopupMenu l'affiche et traite la réponse

  4. #4
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    Pour une réponse ! Merci ! J'aurai pas pu espérer mieux (à un moment j'ai même cru que c'était trivial ou que j'étais un martien de vouloir faire ça) !!

    Ok, donc je comprends ce qu'il faut faire me reste qu'une question :

    Lorsque je clic droit dessus, l'entrée est auto-selectionnée et donc j'aimerais savoir si je peux savoir quelle entrée est selectionnée (histoire de pouvoir récupérer l'info liée à la cellule correcte)...

    quelques candidats :
    virtual void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected )
    virtual void currentChanged ( const QModelIndex & current, const QModelIndex & previous )
    QModelIndex currentIndex () const
    autre ?
    ...

  5. #5
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    il faut juste récupérer la propriété currentItem() du QListView en question

  6. #6
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par cboudy
    il faut juste récupérer la propriété currentItem() du QListView en question
    http://qt.developpez.com/doc/4.1/qlistview/

    => je ne vois pas de fonction "currentItem()" parmi les fonctions publiques du QListView

    En gros, j'aurais aimé que tu me pointes exactement où c'est marqué dans la doc... (parce que je suis en train de faire les spécifications avant de me lancer dans le code donc si je suis sûr que c'est faisable et comme je veux, y'a aucun prob ).

    P.S.: J'utilise Qt 4.1... et apparemment currentItem() n'existe plus dans la 4.1 ( http://qt.developpez.com/doc/3.3/qlistview/#currentitem )

  7. #7
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    sous Qt4 ça devrait être currentIndex() ou selectedIndexes()

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Sinon tu trouveras probablement la réponse dans la page suivante qui traite du pattern model view sous QT, et donc de la sélection:
    http://qt.developpez.com/doc/4.1/mod...w-programming/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Membre régulier
    Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 80
    Points
    80
    Par défaut
    Merci à tous .

    Je suis passé au QTreeWidget plus adéquat à ce que je veux en faire. Par la même occasion j'ai opté pour un customMenuRequested...

  10. #10
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Selection QTreeWidget
    Bonjour,

    Apres 2-3 recherches google et doc QT je n'ai toujours pas trouvé de réponse a cette question :

    Comment récupérer le QTreeWidgetItem sous la souris ?

    En effet j'avais un QListWidget ou je faisais des selections, je suis passé au QTreeWidget ou je veu faire la meme chose...

    Si je ne suis pas clair... et bien... ca métonnerais pas, je posterai un petit screen...

    D'avance Merci !!!

    ++

  11. #11
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par nobpn
    Comment récupérer le QTreeWidgetItem sous la souris ?
    Tu ne peux pas directement récupérer l'item, il faut que tu récupères le currentIndex() qui est un QModelIndex que tu cast ensuite en item
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  12. #12
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci.

    J'ai trouvé le currentItem() en fait qui retourne directement un QTreeItem. JE pose le code si quelqu'un est interressé.

    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
     
    void MenuWidget::contextMenuEvent(QContextMenuEvent *event)
    {
    	QTreeWidgetItem * CurrentItem = currentItem();
     
            // test si on clique droit sur 1 objet de l'arbre
    	if ( ! CurrentItem )
    		return;
     
    	// on remonte jusqu'au Parent le plus haut
    	while ( CurrentItem->parent() )
    		CurrentItem = CurrentItem->parent();
     
     
    	QMenu menu(this);
     
    	menu.addAction(Action_Modif);
    	menu.addAction(Action_Supprimer);
    	menu.addAction(Action_Supprimer_Tout);
     
    	menu.exec(event->globalPos());
    }
    Mon arbre est une visualisation des objets de ma scene OpenGL avec les fils qui sont les transfos, textures... Je remonte donc jusqu'au parent le plus haut pour récupérer l'objet et non ces fils. Et ensuite j'affiche le menu.

    A bientôt !
    Schuuuuuuuuuuus

  13. #13
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    ah ouai !
    désolé je n'avais pas fait attention ,je n'utilise que des View et pas de Widget
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

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

Discussions similaires

  1. ListView et menu contextuel
    Par encolie dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 15/04/2011, 13h14
  2. Depuis quel ListView mon menu contextuel est il appelé ?
    Par kineton dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/12/2010, 17h59
  3. Menu contextuel avec les API
    Par guen dans le forum Access
    Réponses: 6
    Dernier message: 14/09/2006, 23h42
  4. Ouvrir avec du menu contextuel
    Par Furius dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 27/08/2005, 16h03

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