Contextmenu in a QTreeWidget with PyQT

David Boddie david at boddie.org.uk
Thu Nov 22 08:30:42 EST 2007


On Wed Nov 21 19:46:48 CET 2007, blaven wrote:

> I apologize in advance if this is not the correct forum to ask this
> and if someone knows a better place, please let me know.

There is a mailing list for PyQt/PyKDE issues:

  http://www.riverbankcomputing.com/mailman/listinfo/pyqt

It's not a problem to post questions here - some of the people on that list
also read python-list/comp.lang.python.

> But, I am trying to create a Contextmenu (a right-click popup menu) from
> within a QTreeWidget.  I tried setting the contextMenuPolicy to
> CustomContextMenu and then handling the signal
> customContextMenuRequested() but nothing seems to be happening.  ie:
>    self.tree = QTreeWidget()
>    self.tree.setContextMenuPolicy(Qt.CustomContextMenu)
>  
> self.connect(self.tree,SIGNAL('customContextMenuRequested()'),
>              self.newContext)

You need to specify the parameters that the signal passes in the signature:

  self.connect(self.tree,SIGNAL('customContextMenuRequested(QPoint)'),
               self.newContext)

In this case, a QPoint object is passed; see the documentation for more
details:

http://www.riverbankcomputing.com/Docs/PyQt4/html/qwidget.html#customContextMenuRequested

> Does anyone have a sample or tutorial on how to do this?  One other
> question, whe I right click, it changes the selection in the
> TreeWidget, would I need to remove the handler for right clicks to get
> the menu?

With your custom context menu enabled, you may find that right clicks no
longer cause the selection to change. If it does, post another question,
either here or on the PyQt/PyKDE list, and I'm sure someone will help you
out.

Good luck!

David



More information about the Python-list mailing list