2010-07-24 17 views
5

Tôi đang sử dụng lớp QWizard, chứa một số QWizardPage. Đối với một số trang, tôi cần phải làm điều gì đó khi nút "Tiếp theo" được nhấp.Làm cách nào để ghi đè vị trí "tiếp theo" trong QWizard?

Tôi đã cố gắng ghi đè lên vị trí next trong lớp QWizard của mình; Tuy nhiên, có vẻ như điều này không hoạt động. Chương trình vẫn đi vào vị trí ban đầu next trong lớp QWizard của cha mẹ thay vì lớp tôi đã triển khai.

Đây có phải là vì khe này next được bảo vệ ảo không? Làm thế nào tôi có thể làm một số điều sau khi nút tiếp theo được nhấp?


Tệp tiêu đề của lớp QWizard của tôi theo sau. Nhân tiện, tín hiệu accept hoạt động tốt như những gì tôi mong đợi.

#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 

tôi tạo một đối tượng thuật sĩ mới thông qua thuật sĩ QtCreator của (Hà XD)

Mã này được như sau:

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

Và kết nối tín hiệu-khe của next được tạo ra bởi QtCreator, Tôi không thể tìm thấy nơi nó thực sự kết nối. Tôi nghĩ rằng kết nối được xây dựng trong ui_PrimerWizard.h bởi chức năng này:

QMetaObject::connectSlotsByName(PrimerWizard); 
+0

Tôi có tình huống tương tự. Trong trường hợp của tôi, tôi có các trang thuật sĩ bước 1-6, và ở bước 4 tôi muốn thực hiện một yêu cầu http, chờ gọi lại sau đó chuyển sang bước 5. – PedroMorgan

Trả lời

2

Khe next không thể được ghi đè. Tuy nhiên, chức năng validatePage cho QWizardPage có thể. Chức năng này sẽ được gọi khi nhấn nút "Next" hoặc "Finish".

Các vấn đề liên quan