2010-07-24 45 views
5

我正在使用包含几个QWizardPage的QWizard类。对于某些页面,当点击“下一步”按钮时,我需要做些事情。如何覆盖QWizard中的“下一个”插槽?

我试图覆盖我的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(); 

而由QtCreator创建的next信号槽连接,我无法找到它实际连接的位置。我认为,连接是内置的ui_PrimerWizard.h此功能:

QMetaObject::connectSlotsByName(PrimerWizard); 
+0

我有类似的情况。在我的情况下,我有向导页面的步骤1-6,并在第4步我想要一个HTTP请求,等待回调,然后移动到第5步。 – PedroMorgan 2011-01-25 00:00:07

回答

2

next插槽不能被覆盖。但是,QWizardPage的validatePage函数可以。当点击“下一步”或“完成”按钮时,该功能将被调用。