[PySide] right clicking on QTableView to get selected rows
Frank Rueter | OHUfx
frank at ohufx.com
Wed Aug 29 02:45:58 CEST 2012
brilliant, just adding actions to the widget itself and using
self.setContextMenuPolicy(Qt.ActionsContextMenu) works nicely.
I was way over complicating this task.
Thank you!!
On 28/08/12 9:41 PM, Frank Rueter | OHUfx wrote:
> cool, thanks Tibold. That sounds like the right lead.
> I will investigate...
>
> On 28/08/12 9:37 PM, Tibold Kandrai wrote:
>> 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 <mailto: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 <mailto:PySide at qt-project.org>
>> http://lists.qt-project.org/mailman/listinfo/pyside
>>
>>
>>
>>
>> --
>> Kandrai Tibold
>
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20120829/f092b246/attachment.html>
More information about the PySide
mailing list