[PySide] right clicking on QTableView to get selected rows

Tibold Kandrai kandraitibold at gmail.com
Tue Aug 28 11:37:56 CEST 2012


Hi,

There are multiple ways to deal with the context menus. You don't
necessarily need to use the mousePressEvent.
I would use or the customContextMenuRequested signal or adding actions to
the view. Note you also need to set the contextMenuPolicy to
ActionsContextMenu or CustomContextMenu depending on which you use.

References:

   -
   http://doc.qt.nokia.com/4.7-snapshot/qwidget.html#customContextMenuRequested
   -
   http://doc.qt.nokia.com/4.7-snapshot/qwidget.html#contextMenuPolicy-prop
   - http://doc.qt.nokia.com/4.7-snapshot/qwidget.html#addAction

I am not sure though how the selection works exactly with the context menu.
But in the customContextMenuRequested you can get the right clicked row's
index easily like this:
model_index = self.indexAt(point)

Hope this helps,
Tibold


2012/8/28 Frank Rueter | OHUfx <frank at ohufx.com>

> Hi everybody,
>
> I'm trying to implement a simple right click menu for a QTableView to
> work with the selected rows. The basics seem to work nicely but it seems
> like the selectionModel() gets updated AFTER the mousePressEvent
> registered, meaning if the right selection that happens on right lcick
> is not yet included in the  selecetdRows() return value.
> How do I best ensure that whatever row is right clicked is included in
> the selectionModel().selectedRows(0)?
> Here is my code:
>
>
> class ToolsView(QTableView):
>      def __init__(self, parent=None):
>          super(ToolsView, self).__init__(parent)
>          self.setSortingEnabled(True)
>          self.setEditTriggers(QAbstractItemView.NoEditTriggers)
>          self.horizontalHeader().setStretchLastSection(True)
> self.setSelectionBehavior(QAbstractItemView.SelectRows)
>
>      def mousePressEvent(self, event):
>          mouseBtn = event.button()
>          if mouseBtn == Qt.MouseButton.RightButton:
>              print self.selectionModel().selectedRows(0)
>          super(InstalledToolsView, self).mousePressEvent(event)
>
>
> Cheers,
> frank
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
>



-- 
Kandrai Tibold
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20120828/8bba5048/attachment.html>


More information about the PySide mailing list