【问题标题】:How can I overwrite the "next" slot in a QWizard?如何覆盖 QWizard 中的“下一个”插槽?
【发布时间】:2010-07-24 23:25:51
【问题描述】:

我正在使用一个 QWizard 类,其中包含几个 QWizardPage。对于某些页面,我需要在单击“下一步”按钮时执行一些操作。

我试图覆盖我的 QWizard 类中的 next 插槽;但是,这似乎不起作用。该程序仍然进入父 QWizard 类中的原始 next 插槽,而不是我实现的那个。

这是因为这个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);

【问题讨论】:

  • 我也有类似的情况。在我的情况下,我有向导页面第 1-6 步,在第 4 步我想发出一个 http 请求,等待回调然后转到第 5 步。

标签: c++ qt qt4


【解决方案1】:

next 插槽无法被覆盖。但是,QWizardPage 的validatePage 函数可以。单击“下一步”或“完成”按钮时将调用此函数。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    相关资源
    最近更新 更多