简单向导示例

简单向导示例演示了如何使用三个 QWizardPage 实例和一个 QWizard 实例创建一个线性三页注册向导。

简介页面

简介页面是通过 createIntroPage() 函数创建的,其中创建了一个 QWizardPage 并将其标题设置为 "简介"。使用 QLabel 来保存页面描述。使用 QVBoxLayout 来保存 label。当调用 createIntroPage() 函数时返回该页面。

QWizardPage *createIntroPage()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle("Introduction");

    QLabel *label = new QLabel("This wizard will help you register your copy "
                               "of Super Product Two.");
    label->setWordWrap(true);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    page->setLayout(layout);

    return page;
}

注册页面

注册页面是通过 createRegistrationPage() 函数创建的。使用 QLineEdit 实现用户输入姓名和电子邮件地址。使用 QGridLayout 来保存 QLabelQLineEdit 实例。

QWizardPage *createRegistrationPage()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle("Registration");
    page->setSubTitle("Please fill both fields.");

    QLabel *nameLabel = new QLabel("Name:");
    QLineEdit *nameLineEdit = new QLineEdit;

    QLabel *emailLabel = new QLabel("Email address:");
    QLineEdit *emailLineEdit = new QLineEdit;

    QGridLayout *layout = new QGridLayout;
    layout->addWidget(nameLabel, 0, 0);
    layout->addWidget(nameLineEdit, 0, 1);
    layout->addWidget(emailLabel, 1, 0);
    layout->addWidget(emailLineEdit, 1, 1);
    page->setLayout(layout);

    return page;
}

结论页面

结论页面是在 createConclusionPage() 函数中创建的。此函数的内容与 createIntroPage() 类似。使用 QLabel 来通知用户注册过程已成功完成。

QWizardPage *createConclusionPage()
{
    QWizardPage *page = new QWizardPage;
    page->setTitle("Conclusion");

    QLabel *label = new QLabel("You are now successfully registered. Have a "
                               "nice day!");
    label->setWordWrap(true);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    page->setLayout(layout);

    return page;
}

main() 函数

main() 函数实例化一个 QWizard 对象 wizard,并将所有三个 QWizardPage 对象添加到其中。将 wizard 窗口标题设置为 "简单向导",并调用其 show() 函数以显示它。

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

#ifndef QT_NO_TRANSLATION
    QString translatorFileName = QLatin1String("qtbase_");
    translatorFileName += QLocale::system().name();
    QTranslator *translator = new QTranslator(&app);
    if (translator->load(translatorFileName, QLibraryInfo::path(QLibraryInfo::TranslationsPath)))
        app.installTranslator(translator);
#endif

    QWizard wizard;
    wizard.addPage(createIntroPage());
    wizard.addPage(createRegistrationPage());
    wizard.addPage(createConclusionPage());

    wizard.setWindowTitle("Trivial Wizard");
    wizard.show();

    return app.exec();
}

示例项目 @ code.qt.io

另请参阅 QWizard许可证向导示例

© 2024 Qt 公司有限公司。本文件内包含的文档贡献是其相应所有者的版权。本文件提供的文档遵循免费软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款。Qt 以及相应的标志是芬兰的 Qt 公司在芬兰及/或其他国家/地区的商标。所有其他商标均为各自所有者的财产。