我正在尝试创建一个命令类层次结构。基本上每个命令都将绑定到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方法,它是否会像它应该被调用一样?
我需要这个跨平台工作。
答案 0 :(得分:2)
是的,覆盖虚拟插槽只适用于所有其他虚拟方法。最后,信号/插槽连接只是一个方法调用,可以是虚拟的也可以是非虚拟的。