首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Qt框架下显式调用redo()

在Qt框架下显式调用redo()
EN

Stack Overflow用户
提问于 2014-04-15 06:25:47
回答 1查看 416关注 0票数 0

我正在使用QUndoStack (http://qt-project.org/doc/qt-4.8/qundo.html),我想在QUndoStack上显式地调用撤销()和redo()。我查找了Qt文档,并搜索是否支持它,但找不到任何东西。所以,我去做了。

结果--对撤销()的显式调用运行良好。此后,canRedo()返回true。对redo()的后续调用不会输入我定义的任何redo()函数。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 08:28:26

似乎像预期的那样起作用,并记录在案。注意,将命令推到堆栈总是会调用命令对象上的redo()。

代码语言:javascript
复制
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();
}

输出:

代码语言:javascript
复制
DummyCmd c-tor
pushing to stack
redo
calling undo
undo
canRedo after undo:  true
redo
canRedo after redo:  false
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23076069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档