1

我正在尝试创建一个命令类层次结构。基本上每个命令都将绑定到一个 QAction。一旦触发动作,它将调用一个虚拟方法。

这是代码:

class Command  : QObject
{
    Q_OBJECT

public:
    Command(QWidget *parent);

public slots:
    virtual void execute();

protected:
    QAction *commandAct;
};

Command::Command(QWidget *parent)
{
    commandAct = new QAction(parent);
    parent->addAction(commandAct);
    connect(commandAct,SIGNAL(triggered()),this,SLOT(execute()));
}

QAction *Command::getAction()
{
    return commandAct;
}

现在,如果我派生一个类并覆盖执行方法,它会像应该的那样被调用吗?

我需要这个才能跨平台工作。

4

1 回答 1

2

是的,覆盖虚拟插槽仅适用于所有其他虚拟方法。最后,signal/slot connect只是一个方法调用,可以是virtual也可以是non-virtual。

于 2012-01-30T20:18:32.513 回答