簡體   English   中英

如何覆蓋QWizard中的“下一個”插槽?

[英]How can I overwrite the “next” slot in a QWizard?

我正在使用QWizard類,其中包含幾個QWizardPage。 對於某些頁面,我需要在單擊“下一步”按鈕時執行某些操作。

我試圖覆蓋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的向導(Ha XD)創建了一個新的向導實例

代碼如下:

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

next的信號槽連接由QtCreator創建,我無法找到它實際連接的位置。 我認為連接是通過這個函數在ui_PrimerWizard.h中構建的:

QMetaObject::connectSlotsByName(PrimerWizard);

next插槽無法覆蓋。 但是,QWizardPage的validatePage函數可以。 單擊“下一步”或“完成”按鈕時將調用此函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM