如何覆盖QWizard中的"下一个"插槽?

Cla*_*ang 5 c++ qt qt4

我正在使用QWizard类,其中包含几个QWizardPage.对于某些页面,我需要在单击"下一步"按钮时执行某些操作.

我试图覆盖nextQWizard类中的插槽; 然而,似乎这不起作用.程序仍然进入next父QWizard类的原始插槽,而不是我实现的那个.

这是因为这个next插槽是虚拟保护的吗?单击下一个按钮后如何做一些事情?


我的QWizard类的头文件如下.顺便说一句,accept信号正如我预期的那样正常.

#ifndef PRIMERWIZARD_H
#define PRIMERWIZARD_H

#include <QWizard>

namespace Ui {
    class PrimerWizard;
}

class PrimerWizard : public QWizard {
    Q_OBJECT
public:
    PrimerWizard(QWidget *parent = 0);
    ~PrimerWizard();
protected slots:
    void next();
    void accept();

protected:
    void changeEvent(QEvent *e);

private:
    Ui::PrimerWizard *ui;
};

#endif // PRIMERWIZARD_H
Run Code Online (Sandbox Code Playgroud)

我通过QtCreator的向导(Ha XD)创建了一个新的向导实例

代码如下:

PrimerWizard* pW = new PrimerWizard(this);
pW->exec();
Run Code Online (Sandbox Code Playgroud)

信号槽连接next由QtCreator创建,我无法找到它实际连接的位置.我认为连接是通过这个函数在ui_PrimerWizard.h中构建的:

QMetaObject::connectSlotsByName(PrimerWizard);
Run Code Online (Sandbox Code Playgroud)

Cla*_*ang 2

next插槽不能被覆盖。不过,validatePageQWizardPage 的功能就可以。单击“下一步”或“完成”按钮时将调用此函数。