On Friday 06 March 2009 06:53:01 am Marc Nations wrote: > Hi, > I'm trying to create a custom table which pops up a menu when the > user right clicks. This part works ok. It looks like this: > > class Table(QtGui.QTableWidget): > def __init__(self, parent, gui): > QtGui.QTableWidget.__init__(self, parent) > self.gui = gui > > def mouseReleaseEvent(self, event): > if event.button() == QtCore.Qt.RightButton: > self.rightClickMenu(event) > > > def rightClickMenu(self, event): > pos = event.pos > self.gui.ui.menuEdit.popup(QtGui.QCursor.pos()) > > > The problem is that the default before of left click is changed, and > I can't reset it. Without the mods the left clicks acts where if a > multiple selection is made then clicking on another table cell > de-selects all the previous items (unless a modifier key is used). > With the above method, once multiple selections are made then it > basically goes into <shift> mode and all previous selections are > kept. I can't figure out a way to turn that off. > > Is there a way to cherry pick which mouse events you want and ignore > the rest, basically letting them keep their default behavior? Because > it looks like once the function is taken over then the default > behaviors are lost.
Look at QWidget.contextMenuEvent - it catches only right clicks. Overload that. If you want to grab those on the vertical or horizontal headers, I think you'll have to install an event filter on the respective QHeaderViews (QObject.installEventFilter) and grab only QContextMenuEvents for those objects. Jim _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt