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:
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_()) |