gpt4 book ai didi

c++ - Qt Undo Framework下显式调用redo()

转载 作者:行者123 更新时间:2023-11-28 06:56:37 27 4
gpt4 key购买 nike

我正在使用 Qt 撤消框架 (http://qt-project.org/doc/qt-4.8/qundo.html),我想在 QUndoStack 上显式调用 undo() 和 redo()。我查阅了 Qt 文档并搜索以查看是否支持它,但找不到任何内容。所以,我继续做了。

结果 - 对 undo() 的显式调用工作正常。此后 canRedo() 返回 true。对 redo() 的后续调用不会进入我定义的任何 redo() 函数。

请对此提供一些见解。如果我需要分享更多信息,请告诉我。谢谢!

最佳答案

似乎按预期和记录工作。请注意,将命令压入堆栈将始终在命令对象上调用 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

关于c++ - Qt Undo Framework下显式调用redo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23076069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com