【发布时间】:2010-07-24 23:25:51
【问题描述】:
我正在使用一个 QWizard 类,其中包含几个 QWizardPage。对于某些页面,我需要在单击“下一步”按钮时执行一些操作。
我试图覆盖我的 QWizard 类中的 next 插槽;但是,这似乎不起作用。该程序仍然进入父 QWizard 类中的原始 next 插槽,而不是我实现的那个。
这是因为这个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 的向导 (Ha XD) 创建了一个新的向导实例
代码如下:
PrimerWizard* pW = new PrimerWizard(this);
pW->exec();
next 的信号槽连接是由 QtCreator 创建的,我找不到它实际连接的位置。我认为连接是通过这个函数在 ui_PrimerWizard.h 中建立的:
QMetaObject::connectSlotsByName(PrimerWizard);
【问题讨论】:
-
我也有类似的情况。在我的情况下,我有向导页面第 1-6 步,在第 4 步我想发出一个 http 请求,等待回调然后转到第 5 步。