如何在QWizard中覆盖“下一步”插槽?

5
我正在使用QWizard类,它包含多个QWizardPage。对于某些页面,我需要在“下一步”按钮被点击时执行一些操作。
我尝试重写我的QWizard类中的next槽,但似乎不起作用。程序仍然进入父QWizard类中原始的next槽,而不是我实现的那个。
这是因为这个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

我通过QtCreator的向导创建了一个新的向导实例(哈哈XD)。
代码如下:
PrimerWizard* pW = new PrimerWizard(this);
pW->exec();

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

QMetaObject::connectSlotsByName(PrimerWizard);

我有一个类似的情况。在我的情况下,我有向导页面步骤1-6,在第4步时,我想发出HTTP请求,等待回调,然后继续进行第5步。 - PedroMorgan
1个回答

2

next槽位无法被覆盖。但是,QWizardPage的validatePage函数可以。当单击“下一步”或“完成”按钮时,将调用此函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接