поделились QUndoStack между несколькими QMainWindows? - PullRequest
2 голосов
/ 11 ноября 2010

Привет всем,

В моем приложении пользователь может открыть несколько QWindows, которые совместно используют одни и те же данные (сохранить данные, несколько просмотров). Мне нужно было использовать один общий QUndoStack между окнами.

Undo / Redo работает нормально, но когда закрывается любое из QWindow, меню Undo / Redo отключается. Я думаю, это потому, что стек очищен.

Есть советы? Спасибо

Edit: в каждом создании QMainWindow я создаю QActions для отмены / возврата следующим образом:

   redoAction=undoStack->createRedoAction(getMainWindow() ,tr("&Redo"));
   undoAction=undoStack->createUndoAction(getMainWindow(), tr("&Undo"));

где undoStack - это общий экземпляр QUndoStack.

Вот снимок моего приложения - http://oi53.tinypic.com/2rfbztg.jpg

Ответы [ 3 ]

2 голосов
/ 11 ноября 2010

В зависимости от ваших причин совместного использования стеков отмены между окнами, вы также можете рассмотреть возможность использования QUndoGroup.Затем вы создаете отдельные стеки для каждого окна, а затем группируете их с помощью QUndoGroup.Действия отмены / повторения создаются из группы, а не из стеков.

1 голос
/ 11 ноября 2010

создайте свой QUndoStack экземпляр без родителя и в destructor из QWindow проверьте, является ли он последним QWindow, затем удалите QUndoStack экземпляр.

0 голосов
/ 24 сентября 2013

просто передайте указатель текущего окна в Qundostack и сделайте так, как вы хотите, с помощью redo & undo.

...