2016-03-09 11 views
1

Я использую QTableWidget, чтобы отобразить таблицу для построения графика. Пользователь может выполнять операции: вводить, копировать, вырезать и вставлять, добавлять строки, добавлять столбцы, вставлять, удалять и т. Д. Все эти операции должны быть сложены, чтобы пользователь мог отменить или повторить все операции.Выполнение операции отмены и повтора на QTableWidget

Я просмотрел QUndoStack, но в контексте QTableWidget Я не уверен, какие данные или объекты мне придется нажать в стек.

+0

Есть ли у QUndoCommand уже? На самом деле вам нужно создать класс, который наследуется от QUndoCommand. – Apin

+1

Взгляните на http://stackoverflow.com/questions/28954565/how-to-undo-an-edit-of-a-qlistwidgetitem-in-pyside-pyqt/29166218#29166218 – bogl

+0

Apin: no я использовал концепцию QundoCommand в QGraphicsItem. там управляет только добавлением и удалением элементов. но вот данные таблицы. – Wagmare

ответ

1

Как это для меня вы должны помнить значение до редактирования и после в классе, унаследованном от QUndoCommand, так что undo() и redo() могут восстановить состояние вы хотите

+0

но зачем добавить строку, столбец, вставить? если я храню только данные.? – Wagmare

+0

Прежде всего, вам нужно записать все, что вам нужно сделать и что меняется. Например: Редактировать ячейку, вы должны помнить строку, столбец и 2 строки. Добавьте строку, затем вы должны помнить, где она была добавлена. Удалить строку, индекс строки и данные строки – Jeka

+0

ok Jeka. я буду реализовывать таким образом и обновлять здесь. – Wagmare