> Date: Thu, 25 Aug 2022 20:36:01 +1200 > From: Frank Rueter <fr...@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@qt-project.org https://lists.qt-project.org/listinfo/pyside