将QAction连接到虚拟插槽?

时间:2012-01-30 19:34:57

标签: qt virtual slots

我正在尝试创建一个命令类层次结构。基本上每个命令都将绑定到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;
}

现在,如果我派生一个类并覆盖execute方法,它是否会像它应该被调用一样?

我需要这个跨平台工作。

1 个答案:

答案 0 :(得分:2)

是的,覆盖虚拟插槽只适用于所有其他虚拟方法。最后,信号/插槽连接只是一个方法调用,可以是虚拟的也可以是非虚拟的。