Как я могу перезаписать «следующий» слот в QWizard? - PullRequest
5 голосов
/ 25 июля 2010

Я использую класс QWizard, который содержит несколько QWizardPage. Для некоторых страниц мне нужно что-то сделать, когда нажата кнопка «Далее».

Я попытался перезаписать слот next в своем классе QWizard; Однако, похоже, это не работает. Программа все еще входила в исходный слот next в родительском классе QWizard вместо того, который я реализовал.

Это потому, что этот 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();

И соединение слотов сигналов next создано QtCreator, я не могу найти, где оно на самом деле подключено. Я думаю, что соединение встроено в ui_PrimerWizard.h с помощью этой функции:

QMetaObject::connectSlotsByName(PrimerWizard);

1 Ответ

2 голосов
/ 26 июля 2010

Слот next не может быть перезаписан. Однако, функция validatePage для QWizardPage может. Эта функция вызывается при нажатии кнопки «Далее» или «Готово».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...