2010-07-24 6 views
5

여러 QWizardPage가 포함 된 QWizard 클래스를 사용하고 있습니다. 일부 페이지의 경우 "다음"버튼을 클릭 할 때 뭔가해야합니다.QWizard의 "다음"슬롯을 어떻게 덮어 쓸 수 있습니까?

내 QWizard 클래스의 next 슬롯을 덮어 쓰려고했습니다. 그러나 이것이 작동하지 않는 것 같습니다. 프로그램은 여전히 ​​구현 된 대신 부모 QWizard 클래스의 원래 next 슬롯으로 들어갔다.

next 슬롯이 가상으로 보호 되었기 때문에이게 가능합니까? 다음 버튼을 클릭 한 후에는 어떻게해야합니까?


내 QWizard 클래스의 헤더 파일은 다음과 같습니다. 그건 그렇고, accept 신호가 예상대로 잘 작동합니다. ,

PrimerWizard* pW = new PrimerWizard(this); 
pW->exec(); 

그리고 next의 신호 슬롯 연결 QtCreator 의해 생성된다 :

#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)

코드는 다음과 같다 통해 새로운 마법사 인스턴스를 생성 실제로 연결된 곳을 찾을 수 없습니다. 나는 연결이이 기능에 의해 ui_PrimerWizard.h에 ​​내장되어 생각 :

QMetaObject::connectSlotsByName(PrimerWizard); 
+0

비슷한 상황이 있습니다. 제 경우에는 마법사 페이지 1-6 단계가 있고 4 단계에서 http 요청을 만들고 콜백을 기다린 후 5 단계로 이동합니다. – PedroMorgan

답변

2

next 슬롯을 덮어 쓸 수 없습니다. 그러나 QWizardPage에 대해 validatePage 함수를 사용할 수 있습니다. 이 함수는 "다음"또는 "마침"버튼을 클릭 할 때 호출됩니다.

관련 문제