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

PyQt Python Discussion :

QtableWidget et menu contextuels


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Points : 16
    Points
    16
    Par défaut QtableWidget et menu contextuels
    Bonjour,

    J'essaye de mettre un menu contextuel lorsque je clique sur une ligne de mon QTableWidget, mais sans succès. Avec la meme technique, j'ai pourtant réussi à le faire pour un QTableView.

    Ci dessous je vous mets un code simplifié. Le tableau s'affiche, mais il ne se passe rien et je n'ai pas d'erreur... Du coup je ne vois pas comment résoudre mon problème. Pouvez-vous m'aider à comprendre?

    Merci d'avance

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #! /usr/bin/python
    # -*-coding:utf-8 -*-
     
    from PyQt4 import QtGui
    from PyQt4.QtCore import SIGNAL
    import sys
     
     
    class Main(QtGui.QMainWindow):
     
        def __init__(self, parent=None):
            """Initialise la fenêtre"""
            super(Main, self).__init__(parent)
            #QTableWidget display
            self.QTWidget = QtGui.QTableWidget(self)
            self.QTWidget.setFixedWidth(400)
            self.QTWidget.setFixedHeight(400)
     
            self.QTWidget.setAlternatingRowColors(True)
            self.QTWidget.setRowCount(3)
            self.QTWidget.setColumnCount(3)
     
            for i in range(3):
                print 'i', i
                for j in range(3):
                    txt = str(i) + ' - ' + str(j)
                    item = QtGui.QTableWidgetItem(txt, 2)
                    self.QTWidget.setItem(j, i, item)
     
            self.createActions()
            self.createConnexions()
     
        ################################## Context Menu for RefView ###############
        def createActions(self):
            self.action_clearDate = QtGui.QAction(u"Enlever la date", self)
     
        def createConnexions(self):
            self.connect(
                self.QTWidget,
                SIGNAL("customContextMenuRequested(const QPoint &)"),
                self.viewContextMenu)
     
            self.connect(
                self.action_clearDate,
                SIGNAL("triggered()"),
                lambda: self.clearDate(self.QTWidget))
     
        def viewContextMenu(self, p):
            menu = QtGui.QMenu(self.QTWidget)
            menu.addAction(self.action_clearDate)
            menu.exec_(self.QTWidget.mapToGlobal(p))
     
        def clearDate(self, widget):
            print 'OK -> TODO'
     
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        main = Main()
        main.show()
        main.raise_()
        sys.exit(app.exec_())

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il faut:

    - importer QtCore en plus de QtGui

    - ajouter à la fin de __init__ les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            self.QTWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
            self.QTWidget.customContextMenuRequested.connect(self.viewContextMenu)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

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

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  2. Visibilité commande dans un Menu contextuel
    Par Hamdi dans le forum IHM
    Réponses: 3
    Dernier message: 20/01/2005, 12h29
  3. [Plugin] Ajouter une option au menu contextuel ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 22/03/2004, 16h18
  4. [VB6] menu contextuel dynamique
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/07/2003, 11h53
  5. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07

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