Partage
  • Partager sur Facebook
  • Partager sur Twitter

QTableWidget et menu contextuelle

Où est le loup ;)

    15 septembre 2014 à 16:02:36

    J'essaye de faire un menu contextuel dans un QTabelWidget et je n'y arrive pas, rien ne s'affiche. Pourtant avec la même méthode, cela fonctionne avec un QTableView.

    #! /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_())
    



    Voici un code executable, moi là je sèche. Je ne vois pas où ca cloche... Pouvez vous me donner un petit coup de main en me disant si je m'y prend bien?

    ;)

    -
    Edité par yanouil 15 septembre 2014 à 16:10:16

    • Partager sur Facebook
    • Partager sur Twitter

    QTableWidget et menu contextuelle

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown