[PySide] editing selected cells in QTabelWidget

Frank Rueter frank at ohufx.com
Fri Aug 26 09:04:55 CEST 2022


So I made some progress but am now having the problem that a right click on
a persistent editor (combo box) will lose the current table selection. I
tried reimplementing the mousePressEvent on both the editor widget and the
actual table widget to stop that behaviour but to no avail.
Here is a simplified version of the code that shows the problem:
https://pastebin.com/M9RSTFSJ
[image: image.png]
What I am trying to achieve is that a right click on the editor ithe "Type"
column will keep the current row selection, so that I can then pop up the
editor and apply the new value to all selected rows.

What am I missing?

Cheers,
frank

On Fri, Aug 26, 2022 at 7:58 AM Frank Rueter <frank at ohufx.com> wrote:

> Thanks David,
> I was thinking about a right click option as a Plan B. Will do that.
> I will look into using a delegate as well. I had forgotten I could use
> those with the TableWidget as well.
>
> Thanks!
> Frank
>
>
> On Fri, Aug 26, 2022 at 4:52 AM David Ching <dc at dcsoft.com> wrote:
>
>> > Date: Thu, 25 Aug 2022 20:36:01 +1200
>> > From: Frank Rueter <frank at ohufx.com>
>> > Subject: [PySide] editing selected cells in QTabelWidget
>> > Hi all,
>> >
>> > I have a simple table which will never hold much data, so I opted for
>> QTabelWidget rather than QTabelView.
>> > Two columns have combo boxes set as cell widgets; all other cells house
>> straight up strings.
>> >
>> > I have set the selection behaviour to QAbstractItemView.SelectRows and
>> am
>> now trying to figure out how to enable
>> >  editing of selected cells, so that the user can select multiple rows,
>> then double click a cell in that selection and edit it,
>> >  which will cause all other cells in the same column within the
>> selection
>> to receive the new value.
>> >
>> > I have hit a couple of issues:
>> >
>> >  1. By default the selection is reset when I double click in a cell, so
>> I
>>    assume I will have to override QTableWidget.mousePressEvent() to
>> prevent
>>    that somehow. Any suggestions on how to best manage that best? I am not
>>    sure what I need to re-implement to just prevent the selection being
>> reset.
>>
>> In general, double clicking on a multiple selection doesn't work since as
>> you note, the first click (of the double click) selects the single item
>> that
>> was clicked and de-selects the other items.  To edit multiple selected
>> items
>> (my app runs on Windows) I select them and then start editing by pressing
>> F2
>> (which Excel uses similarly) or a toolbar button, or right-clicking one of
>> the selected items which opens a context menu with an Edit item.
>>
>>
>> >   2. the cell widgets do not modify the actual cell item's value. Do I
>> >    need to manually connect the widgets to a slot that will do that or
>> is
>> >    there a better way to do that?
>>
>> I had a similar task:
>>
>> MyTableWidget::MyTableWidget(QWidget *parent) : QTableWidget(parent)
>> {
>>     m_delegate = new MyTableItemDelegate();  // MyTableItemDelegate is
>> derived from QStyledItemDelegate
>>     setItemDelegate(m_delegate);
>> }
>>
>> MyTableItemDelegate overrides createEditor(), setEditorData(),
>> setModelData(), updateEditorGeometry().
>>
>> Apologies, this code is in C++.  It has been years since I developed this
>> code, so don't know more details off the top of my head.
>>
>> Hope this helps,
>> David
>>
>>
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> https://lists.qt-project.org/listinfo/pyside
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20220826/e8e84f42/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 9971 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20220826/e8e84f42/attachment-0001.png>


More information about the PySide mailing list