2010-07-24 16 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函數可以。當點擊「下一步」或「完成」按鈕時,該功能將被調用。