Явный вызов redo () в рамках Qt Undo Framework

Я использую Qt Undo Framework (http://qt-project.org/doc/qt-4.8/qundo.html), и я хочу явно вызвать undo () и redo () в QUndoStack. Я посмотрел документы Qt и стал искать, поддерживается ли это, но ничего не смог найти. Итак, я пошел вперед и сделал это.

Результаты — Явный вызов undo () работает нормально. canRedo () возвращает true после этого. Последующий вызов redo () не входит ни в одну из функций redo (), которые я определил.

Пожалуйста, предоставьте некоторую информацию об этом. Пожалуйста, дайте мне знать, если мне нужно поделиться дополнительной информацией. Спасибо!

0

Решение

Кажется, работает как ожидалось и задокументировано. Обратите внимание, что передача команды в стек всегда вызывает redo () для объекта команды.

class DummyCmd : public QUndoCommand
{
public:
DummyCmd()
: QUndoCommand(){ qDebug() << "DummyCmd c-tor"; }
virtual void undo()
{ qDebug() << "undo"; }
virtual void redo()
{ qDebug() << "redo"; }
};

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

DummyCmd c1;
QUndoStack s;
qDebug() << "pushing to stack";
s.push(&c1);
qDebug() << "calling undo";
s.undo();
qDebug() << "canRedo after undo: " << s.canRedo();
s.redo();
qDebug() << "canRedo after redo: " << s.canRedo();

return a.exec();
}

Выход:

DummyCmd c-tor
pushing to stack
redo
calling undo
undo
canRedo after undo:  true
redo
canRedo after redo:  false
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]