QTableView QStandardItemModel отменить или отменить ввод пользователя - PullRequest
0 голосов
/ 28 марта 2012

Как я могу отменить или отменить запись пользователя в QTableView, всплывающем из QStandarItemModel?

Я связал dataChanged сигнал с обработчиком, где я проверяю данные ...

connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex)));

... но в случае неправильного ввода пользователя я хочу вернуть или отменить ввод пользователя к предыдущему значению элемента.

Я читал об элементе revert (), унаследованном от QAbstractItemModel, но я не могу понять, как именно он работает. Документация гласит: «Позволяет модели знать, что она должна отбрасывать кэшированную информацию». но я не уверен, кэшированы ли введенные пользователем данные или уже сохранены в модели.

В любом случае, если я попытаюсь ...

model->revert();

... после неверного ввода пользователя не работает.

Заранее спасибо!

1 Ответ

2 голосов
/ 28 марта 2012

Ознакомьтесь с Qt's undo framework .Введение в документации гласит:

Qt Undo Framework - это реализация шаблона команд , предназначенная для реализации функций отмены / возврата в приложениях.

Шаблон Command основан на идее, что все редактирование в приложении выполняется путем создания экземпляров объектов команды.Командные объекты применяют изменения к документу и хранятся в стеке команд.Кроме того, каждая команда знает, как отменить свои изменения, чтобы вернуть документ в предыдущее состояние.Пока приложение использует только объекты команд для изменения состояния документа, можно отменить последовательность команд, обойдя стек вниз и вызывая отмену для каждой команды по очереди.Также можно повторить последовательность команд, пройдя вверх по стеку и вызывая повтор для каждой команды.

...