このページでは

QWizard Class

QWizard クラスは、ウィザードのためのフレームワークを提供します。詳細...

ヘッダー: #include <QWizard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QDialog

パブリック型

enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch }
enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, StretchBanner }
flags WizardOptions
enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap }
enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle }

プロパティ

パブリック関数

QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual ~QWizard()
int addPage(QWizardPage *page)
QAbstractButton *button(QWizard::WizardButton which) const
QString buttonText(QWizard::WizardButton which) const
int currentId() const
QWizardPage *currentPage() const
QVariant field(const QString &name) const
bool hasVisitedPage(int id) const
virtual int nextId() const
QWizard::WizardOptions options() const
QWizardPage *page(int id) const
QList<int> pageIds() const
QPixmap pixmap(QWizard::WizardPixmap which) const
void removePage(int id)
void setButton(QWizard::WizardButton which, QAbstractButton *button)
void setButtonLayout(const QList<QWizard::WizardButton> &layout)
void setButtonText(QWizard::WizardButton which, const QString &text)
void setDefaultProperty(const char *className, const char *property, const char *changedSignal)
void setField(const QString &name, const QVariant &value)
void setOption(QWizard::WizardOption option, bool on = true)
void setOptions(QWizard::WizardOptions options)
void setPage(int id, QWizardPage *page)
void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
void setSideWidget(QWidget *widget)
void setStartId(int id)
void setSubTitleFormat(Qt::TextFormat format)
void setTitleFormat(Qt::TextFormat format)
void setWizardStyle(QWizard::WizardStyle style)
QWidget *sideWidget() const
int startId() const
Qt::TextFormat subTitleFormat() const
bool testOption(QWizard::WizardOption option) const
Qt::TextFormat titleFormat() const
virtual bool validateCurrentPage()
QList<int> visitedIds() const
QWizard::WizardStyle wizardStyle() const

再実装されたパブリック関数

virtual void setVisible(bool visible) override
virtual QSize sizeHint() const override

パブリックスロット

void back()
void next()
void restart()
void setCurrentId(int id)

シグナル

void currentIdChanged(int id)
void customButtonClicked(int which)
void helpRequested()
void pageAdded(int id)
void pageRemoved(int id)

保護された関数

virtual void cleanupPage(int id)
virtual void initializePage(int id)

再実装された保護関数

virtual void done(int result) override
virtual bool event(QEvent *event) override
virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override

詳細な説明

ウィザード(macOSでは「アシスタント」とも呼ばれる)は、一連のページで構成される特殊な入力ダイアログです。ウィザードの目的は、ユーザーをステップごとにプロセスを通じて誘導することです。ウィザードは、ユーザーが習得するのが難しいと感じる可能性のある、複雑または頻繁に行われないタスクに役立ちます。

QWizardはQDialog を継承しており、ウィザードを表します。各ページはQWizardPage (QWidget のサブクラス)です。独自のウィザードを作成するには、これらのクラスを直接使用するか、より詳細な制御を行うためにサブクラス化することができます。

簡単な例

以下の例は、ウィザードページを作成し、それらをウィザードに追加する方法を示しています。より高度な例については、「ライセンス・ウィザード」を参照してください。

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;
}

QWizardPage *createRegistrationPage()
{
    ...
}

QWizardPage *createConclusionPage()
{
    ...
}

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

#if QT_CONFIG(translation)
    QTranslator translator;
    for (const QString &trPath : QLibraryInfo::paths(QLibraryInfo::TranslationsPath)) {
        if (translator.load(QLocale(), u"qtbase"_s, u"_"_s, trPath)) {
            app.installTranslator(&translator);
            break;
        }
    }
#endif

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

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

    return app.exec();
}

ウィザードの見た目と操作感

QWizard では、4 種類のウィザードのルック・アンド・フィールをサポートしています:

setWizardStyle() を使用することで、使用する外観を明示的に設定できます(例:すべてのプラットフォームで同じ外観にしたい場合など)。

注:AeroStyle は、アルファ合成が有効になっているWindows Vistaシステムでのみ効果を発揮します。この条件が満たされない場合は、ModernStyle がフォールバックとして使用されます。

ウィザードのスタイルに加え、ウィザードのルックアンドフィールを制御するいくつかのオプションがあります。これらは、setOption() またはsetOptions() を使用して設定できます。たとえば、HaveHelpButton を指定すると、QWizard は他のウィザードボタンとともに「Help 」ボタンを表示します。

setButtonLayout() を使用すれば、ウィザードのボタンの順序を任意の順序に変更することも可能です。また、ボタン行には最大3つのカスタムボタン(例:Print ボタン)を追加できます。これを行うには、CustomButton1 、CustomButton2 、またはCustomButton3 を引数として指定してsetButton() またはsetButtonText() を呼び出し、ボタンを設定した上で、HaveCustomButton1 、HaveCustomButton2 、またはHaveCustomButton3 オプションを有効にします。 ユーザーがカスタムボタンをクリックするたびに、customButtonClicked() が発火します。例:

        wizard()->setButtonText(QWizard::CustomButton1, tr("&Print"));
        wizard()->setOption(QWizard::HaveCustomButton1, true);
        connect(wizard(), &QWizard::customButtonClicked,
                this, &ConclusionPage::printButtonClicked);

ウィザードページの要素

ウィザードは、一連の `QWizardPage` で構成されます。どの時点でも、表示されるページは1つだけです。ページには以下の属性があります:

以下の図は、これらの属性がすべて存在し、ModernStyle が使用されている場合を想定して、QWizard がこれらの属性をどのようにレンダリングするかを示しています:

ウィザードページの属性

subTitle が設定されている場合、QWizardはそれをヘッダーに表示します。その際、BannerPixmap およびLogoPixmap を使用してヘッダーを装飾します。WatermarkPixmap は、ヘッダーの下の左側に表示されます。最下部には、ユーザーがページ間を移動できるボタンが並んでいます。

ページ本体(QWizardPage ウィジェット)は、ヘッダー、透かし、ボタン列の間の領域を占めています。通常、ページはQWizardPage であり、その上にQGridLayout が配置され、標準の子ウィジェット(QLabel、QLineEditなど)が含まれています。

ウィザードのスタイルがMacStyle の場合、ページの外観は全く異なってきます:

MacStyle を使用したウィザードページの属性

MacStyle では、透かし、バナー、ロゴのピクマップは無視されます。BackgroundPixmap が設定されている場合は、それがウィザードの背景として使用されます。設定されていない場合は、デフォルトの「アシスタント」画像が使用されます。

タイトルとサブタイトルは、個々のページでQWizardPage::setTitle()およびQWizardPage::setSubTitle()を呼び出すことで設定されます。これらはプレーンテキストまたはHTMLで指定できます(titleFormat およびsubTitleFormat を参照)。ピクマップは、setPixmap()を使用してウィザード全体に対してグローバルに設定することも、QWizardPage::setPixmap()を使用してページごとに個別に設定することもできます。

フィールドの登録と使用

多くのウィザードでは、あるページの内容が、後のページのフィールドのデフォルト値に影響を与えることがあります。ページ間の連携を容易にするため、QWizard は「フィールド」メカニズムをサポートしています。これにより、ページ上でフィールド(例:QLineEdit )を登録し、どのページからでもその値にアクセスすることができます。 また、必須フィールド(つまり、ユーザーが次のページに進む前に入力しなければならないフィールド)を指定することも可能です。

フィールドを登録するには、QWizardPage::registerField() フィールドを呼び出します。例:

    registerField("evaluate.name*", nameLineEdit);
    registerField("evaluate.email*", emailLineEdit);

上記のコードは、className 、baseClass 、qobjectMacro の3つのフィールドを登録しており、これらは3つの子ウィジェットに関連付けられています。className の横にあるアスタリスク(* )は、必須フィールドであることを示しています。

どのページのフィールドも、他のどのページからでもアクセス可能です。例えば:

void ConclusionPage::initializePage()
{
    QString licenseText;

    if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) {
        licenseText = tr("<u>Evaluation License Agreement:</u> "
                         "You can use this software for 30 days and make one "
                         "backup, but you are not allowed to distribute it.");
    } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) {
        const QString emailAddress = field("details.email").toString();
        licenseText = tr("<u>First-Time License Agreement:</u> "
                         "You can use this software subject to the license "
                         "you will receive by email sent to %1.").arg(emailAddress);
    } else {
        licenseText = tr("<u>Upgrade License Agreement:</u> "
                         "This software is licensed under the terms of your "
                         "current license.");
    }
    bottomLabel->setText(licenseText);
}

ここでは、QWizardPage::field() を呼び出して、details.email フィールド(DetailsPage で定義されたもの)の内容にアクセスし、それを用いてConclusionPage を初期化しています。フィールドの内容はQVariant として返されます。

QWizardPage::registerField() を使用してフィールドを作成する際は、一意のフィールド名とウィジェットを渡します。 また、3 番目と 4 番目の引数として、Qt プロパティ名と「changed」シグナル(プロパティが変更されたときに発火するシグナル)を指定することもできます。ただし、QLineEdit 、QCheckBox 、QComboBox などの一般的な Qt Widgets の場合、QWizard がどのプロパティを参照すべきかを認識しているため、これらを指定する必要はありません。

プロパティを登録する際に名前の末尾にアスタリスク(* )を付加すると、そのフィールドは必須フィールドとなります。ページに必須フィールドが含まれている場合、Next および/またはFinish ボタンは、すべての必須フィールドが入力されたときにのみ有効になります。

フィールドが「入力済み」とみなされるかどうかを判断するために、QWizardは単に、そのフィールドの現在の値が元の値(initializePage()が呼び出された時点での値)と等しくないかどうかを確認します。QLineEdit およびQAbstractSpinBox のサブクラスについては、QWizardはさらに、hasAcceptableInput()がtrueを返すかどうかも確認し、バリデータやマスクの設定を反映させます。

QWizardの必須フィールドの仕組みは、利便性のために提供されています。より強力な(ただし、より手間のかかる)代替手段としては、QWizardPage::isComplete()を再実装し、ページが完全または不完全になった際にQWizardPage::completeChanged()シグナルを発行する方法があります。

Next およびFinish ボタンの有効/無効の状態は、ユーザー入力の妥当性チェックを行う方法の一つです。 もう一つの方法は、validateCurrentPage()(またはQWizardPage::validatePage())を再実装して、最終的な検証を行い(ユーザーが不完全または無効な情報を入力した場合はエラーメッセージを表示する)、その処理を行うことです。この関数がtrue を返した場合、次のページが表示されます(またはウィザードが終了します)。そうでない場合は、現在のページが表示されたままになります。

直線型ウィザードの作成

ほとんどのウィザードは線形構造をしており、ページ 1 の後にページ 2 が続いて、最後のページに至るまで順次進行します。 「Trivial Wizard」の例は、まさにそのようなウィザードです。QWizard では、QWizardPageをインスタンス化し、addPage() を使用して挿入することで、直線的なウィザードを作成します。デフォルトでは、ページは追加された順序で表示されます。例えば:

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

ページが表示される直前に、QWizardはinitializePage()を呼び出し(これによりQWizardPage::initializePage()が呼び出されます)、ページにデフォルト値を設定します。デフォルトでは、この関数は何も行いませんが、他のページのフィールドに基づいてページの内容を初期化するように再実装することも可能です(example above を参照)。

ユーザーがBack を押すと、cleanupPage()が呼び出されます(これにより、QWizardPage::cleanupPage()が呼び出されます)。デフォルトの実装では、ページのフィールドは元の値(initializePage()が呼び出される前の値)にリセットされます。Back ボタンを非破壊的に動作させ、ユーザーが入力した値を保持したい場合は、IndependentPages オプションを有効にするだけで済みます。

非線形ウィザードの作成

一部のウィザードは、ユーザーから提供された情報に基づいて異なる進行経路を許可するという点で、より複雑です。「License Wizard」の例がこれを示しています。この例では複数のウィザードページが用意されており、選択されたオプションに応じて、ユーザーは異なるページに遷移することができます。

複雑なウィザードページのフローチャート

複雑なウィザードでは、ページは ID によって識別されます。これらの ID は通常、列挙型(enum)を使用して定義されます。例えば:

class LicenseWizard : public QWizard
{
    ...
    enum { Page_Intro, Page_Evaluate, Page_Register, Page_Details,
           Page_Conclusion };
    ...
};

ページの挿入には `setPage()` を使用します。この関数は、ID と `QWizardPage `(またはそのサブクラス)のインスタンスを引数として受け取ります:

LicenseWizard::LicenseWizard(QWidget *parent)
    : QWizard(parent)
{
    setPage(Page_Intro, new IntroPage);
    setPage(Page_Evaluate, new EvaluatePage);
    setPage(Page_Register, new RegisterPage);
    setPage(Page_Details, new DetailsPage);
    setPage(Page_Conclusion, new ConclusionPage);
    ...
}

デフォルトでは、ページはIDの昇順で表示されます。ユーザーが選択したオプションに応じて動的に順序を変更するには、QWizardPage::nextId()を再実装する必要があります。例えば:

int IntroPage::nextId() const
{
    if (evaluateRadioButton->isChecked()) {
        return LicenseWizard::Page_Evaluate;
    } else {
        return LicenseWizard::Page_Register;
    }
}

int EvaluatePage::nextId() const
{
    return LicenseWizard::Page_Conclusion;
}

int RegisterPage::nextId() const
{
    if (upgradeKeyLineEdit->text().isEmpty()) {
        return LicenseWizard::Page_Details;
    } else {
        return LicenseWizard::Page_Conclusion;
    }
}

int DetailsPage::nextId() const
{
    return LicenseWizard::Page_Conclusion;
}

int ConclusionPage::nextId() const
{
    return -1;
}

また、すべてのロジックをQWizard::nextId() の再実装の中にまとめて記述することも可能です。例えば:

int LicenseWizard::nextId() const
{
    switch (currentId()) {
    case Page_Intro:
        if (field("intro.evaluate").toBool()) {
            return Page_Evaluate;
        } else {
            return Page_Register;
        }
    case Page_Evaluate:
        return Page_Conclusion;
    case Page_Register:
        if (field("register.upgradeKey").toString().isEmpty()) {
            return Page_Details;
        } else {
            return Page_Conclusion;
        }
    case Page_Details:
        return Page_Conclusion;
    case Page_Conclusion:
    default:
        return -1;
    }
}

IDが最も小さいページ以外のページから開始するには、setStartId()を呼び出します。

ページがすでに閲覧済みかどうかを確認するには、hasVisitedPage() を呼び出します。例:

void ConclusionPage::initializePage()
{
    QString licenseText;

    if (wizard()->hasVisitedPage(LicenseWizard::Page_Evaluate)) {
        licenseText = tr("<u>Evaluation License Agreement:</u> "
                         "You can use this software for 30 days and make one "
                         "backup, but you are not allowed to distribute it.");
    } else if (wizard()->hasVisitedPage(LicenseWizard::Page_Details)) {
        const QString emailAddress = field("details.email").toString();
        licenseText = tr("<u>First-Time License Agreement:</u> "
                         "You can use this software subject to the license "
                         "you will receive by email sent to %1.").arg(emailAddress);
    } else {
        licenseText = tr("<u>Upgrade License Agreement:</u> "
                         "This software is licensed under the terms of your "
                         "current license.");
    }
    bottomLabel->setText(licenseText);
}

「 QWizardPage」 、「ウィザードの簡単な例」、および「ライセンス・ウィザードの例」も参照してください 。

メンバ型のドキュメント

enum QWizard::WizardButton

この列挙型は、ウィザード内のボタンを指定します。

定数値説明
QWizard::BackButton0「Back 」ボタン(macOS では「Go Back 」)
QWizard::NextButton1「Next 」ボタン(macOS では「Continue 」)
QWizard::CommitButton2「Commit 」ボタン
QWizard::FinishButton3「Finish 」ボタン(macOSではDone )
QWizard::CancelButton4「Cancel 」ボタン(NoCancelButton も参照)
QWizard::HelpButton5「Help 」ボタン(「HaveHelpButton 」も参照)
QWizard::CustomButton16最初のユーザー定義ボタン(HaveCustomButton1 も参照)
QWizard::CustomButton272番目のユーザー定義ボタン(HaveCustomButton2 も参照)
QWizard::CustomButton383番目のユーザー定義ボタン(HaveCustomButton3 も参照)

以下の値は、setButtonLayout() を呼び出す場合にのみ有効です:

定数値説明
QWizard::Stretch9ボタンレイアウトにおける水平方向の伸縮率

setButton()、setButtonText()、setButtonLayout()、およびcustomButtonClicked()も参照してください 。

enum QWizard::WizardOption
flags QWizard::WizardOptions

この列挙型は、ウィザードの見た目や操作感に影響を与えるさまざまなオプションを指定します。

定数値説明
QWizard::IndependentPages0x00000001各ページは互いに独立しています(つまり、各ページは互いに値を継承しません)。
QWizard::IgnoreSubTitles0x00000002サブタイトルが設定されている場合でも、表示しない。
QWizard::ExtendedWatermarkPixmap0x00000004WatermarkPixmap をウィンドウの端まで拡張します。
QWizard::NoDefaultButton0x00000008Next またはFinish ボタンを、ダイアログのdefault button として扱わないでください。
QWizard::NoBackButtonOnStartPage0x00000010スタートページに「Back 」ボタンを表示しないでください。
QWizard::NoBackButtonOnLastPage0x00000020最後のページでは、「Back 」ボタンを表示しないでください。
QWizard::DisabledBackButtonOnLastPage0x00000040最終ページで「Back 」ボタンを無効にする。
QWizard::HaveNextButtonOnLastPage0x00000080最終ページに(無効化された)「Next 」ボタンを表示する。
QWizard::HaveFinishButtonOnEarlyPages0x00000100最終ページ以外のページで、(無効な)Finish ボタンを表示する。
QWizard::NoCancelButton0x00000200「Cancel 」ボタンを表示しない。
QWizard::CancelButtonOnLeft0x00000400「Cancel 」ボタンを、Back の左側に配置します(Finish やNext の右側ではなく)。
QWizard::HaveHelpButton0x00000800「Help 」ボタンを表示します。
QWizard::HelpButtonOnRight0x00001000「Help 」ボタンを、ボタンレイアウトの最右端に配置します(最左端ではなく)。
QWizard::HaveCustomButton10x00002000最初のユーザー定義ボタン(CustomButton1 )を表示します。
QWizard::HaveCustomButton20x000040002番目のユーザー定義ボタン(CustomButton2 )を表示します。
QWizard::HaveCustomButton30x000080003番目のユーザー定義ボタン(CustomButton3 )を表示します。
QWizard::NoCancelButtonOnLastPage0x00010000最後のページでは、Cancel ボタンを表示しない。
QWizard::StretchBanner0x00020000banner がある場合は、ウィザードの全幅に拡大表示します。

WizardOptions 型は、QFlags<WizardOption> の typedef です。これは、WizardOption 値の OR 組み合わせを格納します。

setOptions()、setOption()、およびtestOption()も参照してください 。

enum QWizard::WizardPixmap

この列挙型は、ページに関連付け可能なピクマップを指定します。

定数値説明
QWizard::WatermarkPixmap0ClassicStyle またはModernStyle ページの左側にある縦長のピクマップ
QWizard::LogoPixmap1ClassicStyle またはModernStyle ページヘッダーの右側にある小さなピクマップ
QWizard::BannerPixmap2ModernStyle ページのヘッダーの背景を占めるピクマップ
QWizard::BackgroundPixmap3MacStyle ウィザードの背景を占めるピクマップ

setPixmap()、QWizardPage::setPixmap()、およびElements of a Wizard Pageも参照してください 。

enum QWizard::WizardStyle

この列挙型は、QWizard でサポートされているさまざまな外観を指定します。

定数定数値説明
QWizard::ClassicStyle0従来の Windows スタイル
QWizard::ModernStyle1モダンな Windows スタイル
QWizard::MacStyle2macOS風のデザイン
QWizard::AeroStyle3Windows Aero風の外観

関連項目: setWizardStyle()、WizardOption 、およびWizard Look and Feel 。

プロパティのドキュメント

currentId : int

このプロパティには、現在のページのIDが格納されます

デフォルトでは、このプロパティの値は -1 であり、現在ページが表示されていないことを示します。

アクセス関数:

int currentId() const
void setCurrentId(int id)

通知シグナル:

void currentIdChanged(int id)

関連項目: currentPage()。

options : WizardOptions

このプロパティには、ウィザードの見た目や操作感に影響を与えるさまざまなオプションが格納されています

デフォルトでは、プラットフォームに応じて以下のオプションが設定されています:

アクセス関数:

QWizard::WizardOptions options() const
void setOptions(QWizard::WizardOptions options)

「wizardStyle」も参照してください 。

startId : int

このプロパティには、最初のページのIDが格納されます

このプロパティが明示的に設定されていない場合、このウィザード内の最も小さいページIDがデフォルト値として設定されます。まだページが挿入されていない場合は-1となります。

アクセス関数:

int startId() const
void setStartId(int id)

関連項目: restart() およびnextId()。

subTitleFormat : Qt::TextFormat

このプロパティには、ページのサブタイトルで使用されるテキスト形式が格納されます

デフォルトの書式は `Qt::AutoText` です。

アクセス関数:

Qt::TextFormat subTitleFormat() const
void setSubTitleFormat(Qt::TextFormat format)

「 QWizardPage::title 」および「titleFormat 」も参照してください 。

titleFormat : Qt::TextFormat

このプロパティは、ページタイトルで使用されるテキスト形式を保持します

デフォルトの形式は「Qt::AutoText 」です。

アクセス関数:

Qt::TextFormat titleFormat() const
void setTitleFormat(Qt::TextFormat format)

「 QWizardPage::title 」および「subTitleFormat 」も参照してください 。

wizardStyle : WizardStyle

このプロパティは、ウィザードのルックアンドフィールを保持します

デフォルトでは、QWizard は、現在のウィジェットスタイルに関係なく、アルファ合成が有効になっているWindows Vistaシステム上でAeroStyle を使用します。 そうでない場合、デフォルトのウィザードスタイルは、現在のウィジェットスタイルに応じて次のように決まります。現在のウィジェットスタイルが QMacStyle の場合はMacStyle がデフォルトとなり、QWindowsStyle の場合はModernStyle がデフォルトとなり、それ以外の場合はClassicStyle がデフォルトとなります。

アクセス関数:

QWizard::WizardStyle wizardStyle() const
void setWizardStyle(QWizard::WizardStyle style)

Wizard Look and Feel およびoptionsも参照してください 。

メンバ関数のドキュメント

[explicit] QWizard::QWizard(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

指定されたparent およびウィンドウflags を使用して、ウィザードを作成します。

parent() およびwindowFlags()も参照してください 。

[virtual noexcept] QWizard::~QWizard()

ウィザードとそのページを破棄し、割り当てられていたリソースを解放します。

int QWizard::addPage(QWizardPage *page)

指定されたpage をウィザードに追加し、そのページのIDを返します。

このIDは、その時点までのQWizard に含まれる他のどのIDよりも大きいことが保証されています。

setPage()、page)、およびpageAdded()も参照してください 。

[slot] void QWizard::back()

前のページに戻ります。

これは、Back ボタンを押すのと同じです。

next()、accept()、reject()、およびrestart()も参照してください 。

QAbstractButton *QWizard::button(QWizard::WizardButton which) const

ロール「which 」に対応するボタンを返します。

setButton() およびsetButtonText()も参照してください 。

QString QWizard::buttonText(QWizard::WizardButton which) const

which ボタン上のテキストを返します。

setButtonText() を使用してテキストが設定されている場合、そのテキストが返されます。

デフォルトでは、ボタンのテキストはwizardStyle に依存します。たとえば、macOSでは、Next ボタンはContinue と呼ばれます。

button()、setButton()、setButtonText()、QWizardPage::buttonText()、およびQWizardPage::setButtonText()も参照してください 。

[virtual protected] void QWizard::cleanupPage(int id)

この仮想関数は、QWizard によって呼び出され、ユーザーがBack をクリックしてページを離れる直前に、ページid をクリーンアップします(QWizard::IndependentPages オプションが設定されていない場合)。

デフォルトの実装では、ページ (id) に対してQWizardPage::cleanupPage() を呼び出します。

QWizardPage::cleanupPage() およびinitializePage()も参照してください 。

[signal] void QWizard::currentIdChanged(int id)

このシグナルは、現在のページが変更された際に、新しい現在のページid を伴って発火します。

注: プロパティ `currentId` に対する通知 シグナルです。

関連項目: currentId() およびcurrentPage()。

QWizardPage *QWizard::currentPage() const

現在のページへのポインタを返します。現在のページがない場合(たとえば、ウィザードが表示される前など)は、nullptr を返します。

これは、page(currentId()) を呼び出すのと同じです。

page()、currentId()、およびrestart()も参照してください 。

[signal] void QWizard::customButtonClicked(int which)

このシグナルは、ユーザーがカスタムボタンをクリックしたときに発火します。which には、CustomButton1 、CustomButton2 、またはCustomButton3 を指定できます。

デフォルトでは、カスタムボタンは表示されません。カスタムボタンを表示するには、HaveCustomButton1 、HaveCustomButton2 、またはHaveCustomButton3 を指定してsetOption()を呼び出し、設定するにはsetButtonText()またはsetButton()を使用してください。

helpRequested()も参照してください 。

[override virtual protected] void QWizard::done(int result)

QDialog::done(int r) を再実装します。

[override virtual protected] bool QWizard::event(QEvent *event)

QWidget::event(QEvent *event) を再実装します。

QVariant QWizard::field(const QString &name) const

「name 」という名前のフィールドの値を返します。

この関数を使用すると、ウィザードのどのページにあるフィールドにもアクセスできます。

関連項目: QWizardPage::registerField()、QWizardPage::field()、setField()も参照してください 。

bool QWizard::hasVisitedPage(int id) const

ページ履歴にページid が含まれている場合はtrue を返し、そうでない場合はfalse を返します。

Back を押すと、現在のページが再び「未閲覧」としてマークされます。

visitedIds()も参照してください 。

[signal] void QWizard::helpRequested()

このシグナルは、ユーザーが「Help 」ボタンをクリックしたときに発火します。

デフォルトでは、「Help 」ボタンは表示されません。表示するには、setOption(HaveHelpButton, true) を呼び出してください。

例:

LicenseWizard::LicenseWizard(QWidget *parent)
    : QWizard(parent)
{
    ...
    setOption(HaveHelpButton, true);
    connect(this, &QWizard::helpRequested, this, &LicenseWizard::showHelp);
    ...
}

void LicenseWizard::showHelp()
{
    static QString lastHelpMessage;

    QString message;

    switch (currentId()) {
    case Page_Intro:
        message = tr("The decision you make here will affect which page you "
                     "get to see next.");
        break;
    ...
    default:
        message = tr("This help is likely not to be of any help.");
    }

    QMessageBox::information(this, tr("License Wizard Help"), message);

}

customButtonClicked()も参照してください 。

[virtual protected] void QWizard::initializePage(int id)

この仮想関数は、QWizard によって呼び出され、QWizard::restart() の呼び出し結果として、あるいはユーザーがNext をクリックした結果として、ページid が表示される直前に、そのページの準備を行います。(ただし、QWizard::IndependentPages オプションが設定されている場合、この関数はページが最初に表示される時にのみ呼び出されます。)

この関数を再実装することで、前のページのフィールドに基づいて、現在のページのフィールドが適切に初期化されるようにすることができます。

デフォルトの実装では、page(id) でQWizardPage::initializePage() が呼び出されます。

QWizardPage::initializePage() およびcleanupPage()も参照してください 。

[override virtual protected] bool QWizard::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)

QWidget::nativeEvent (const QByteArray &eventType, void *message, qintptr *result)を再実装します。

[slot] void QWizard::next()

次のページに進みます。

これは、Next またはCommit のボタンを押すのと同じです。

nextId()、back()、accept()、reject()、およびrestart()も参照してください 。

[virtual] int QWizard::nextId() const

この仮想関数は、ユーザーが「Next 」ボタンをクリックした際に、どのページを表示するかを判断するために、QWizard によって呼び出されます。

戻り値は次のページのID、あるいは次のページがない場合は-1となります。

デフォルトの実装では、currentPage() 内でQWizardPage::nextId() を呼び出します。

この関数を再実装することで、動的なページ順序を指定することができます。

QWizardPage::nextId() およびcurrentPage()も参照してください 。

QWizardPage *QWizard::page(int id) const

指定されたid を持つページを返します。そのようなページが存在しない場合は、nullptr を返します。

addPage() およびsetPage()も参照してください 。

[signal] void QWizard::pageAdded(int id)

このシグナルは、ウィザードにページが追加されるたびに発火します。ページのid がパラメータとして渡されます。

addPage()、setPage()、およびstartId()も参照してください 。

QList<int> QWizard::pageIds() const

ページIDのリストを返します。

[signal] void QWizard::pageRemoved(int id)

このシグナルは、ウィザードからページが削除されるたびに発火します。ページのid がパラメータとして渡されます。

removePage() およびstartId()も参照してください 。

[override virtual protected] void QWizard::paintEvent(QPaintEvent *event)

QWidget::paintEvent (QPaintEvent *event)を再実装します。

QPixmap QWizard::pixmap(QWizard::WizardPixmap which) const

ロール「which 」に設定されているピクマップを返します。

デフォルトでは、macOS において設定されているピクマップはBackgroundPixmap のみです。

setPixmap()、QWizardPage::pixmap()、およびElements of a Wizard Pageも参照してください 。

void QWizard::removePage(int id)

指定されたid を持つページを削除します。必要に応じてcleanupPage()が呼び出されます。

注: ページを削除すると 、startId プロパティの値に影響を与える可能性があります。

関連項目: addPage()、setPage()、pageRemoved()、およびstartId()。

[override virtual protected] void QWizard::resizeEvent(QResizeEvent *event)

QDialog::resizeEvent (QResizeEvent *)を再実装します。

[slot] void QWizard::restart()

ウィザードを最初のページから再起動します。この関数は、ウィザードが表示されたときに自動的に呼び出されます。

startId()も参照してください 。

void QWizard::setButton(QWizard::WizardButton which, QAbstractButton *button)

ロール「which 」に対応するボタンを「button 」に設定します。

ウィザードに追加のボタン(例:Print ボタン)を追加するには、setButton() を呼び出してCustomButton1 をCustomButton3 に設定し、HaveCustomButton1 からHaveCustomButton3 へのオプションを使用してボタンを表示させる方法があります。

button()、setButtonText()、setButtonLayout()、およびoptionsも参照してください 。

void QWizard::setButtonLayout(const QList<QWizard::WizardButton> &layout)

ボタンの表示順序を `layout` に設定します。ここで、layout は `WizardButton` のリストです。

デフォルトのレイアウトは、設定されているオプション(例:HelpButtonOnRight かどうか)によって異なります。options が提供する機能以上にボタンのレイアウトを細かく制御する必要がある場合は、この関数を呼び出すことができます。

Stretch を使用すると、レイアウト内の水平方向の伸縮を指定できます。

例:

MyWizard::MyWizard(QWidget *parent)
    : QWizard(parent)
{
    //...
    QList<QWizard::WizardButton> layout;
    layout << QWizard::Stretch << QWizard::BackButton << QWizard::CancelButton
           << QWizard::NextButton << QWizard::FinishButton;
    setButtonLayout(layout);
    //...
}

関連項目: setButton()、setButtonText()、およびsetOptions()。

void QWizard::setButtonText(QWizard::WizardButton which, const QString &text)

ボタン「which 」のテキストを「text 」に設定します。

デフォルトでは、ボタンのテキストは `wizardStyle` によって決まります。たとえば、macOS では、「Next 」ボタンは「Continue 」と呼ばれます。

ウィザードに追加のボタン(例:Print ボタン)を追加するには、setButtonText()をCustomButton1 、CustomButton2 、またはCustomButton3 で呼び出してテキストを設定し、HaveCustomButton1 、HaveCustomButton2 、および/またはHaveCustomButton3 オプションを使用してボタンを表示させるという方法があります。

また、QWizardPage::setButtonText() を使用することで、ページごとにボタンのテキストを設定することも可能です。

buttonText()、setButton()、button()、setButtonLayout()、setOptions()、およびQWizardPage::setButtonText()も参照してください 。

[slot] void QWizard::setCurrentId(int id)

currentId からid までのページを経由せずに、currentId をid に設定します。

ページ変更なしで戻ります(ただし、

  • ウィザードにページが含まれていない場合
  • 現在のページが無効である場合
  • 指定されたページがcurrentId() と等しい場合
  • 指定されたページが範囲外の場合

注:ページが先へスキップされ、id が 0 の場合、ページ閲覧履歴は削除されます

注: プロパティcurrentId のセッター 関数。

currentId()も参照してください 。

void QWizard::setDefaultProperty(const char *className, const char *property, const char *changedSignal)

className のデフォルトプロパティを `property` に、関連する変更シグナルを `changedSignal` に設定します。

このデフォルトプロパティは、className (またはそのサブクラスのいずれか)のインスタンスがQWizardPage::registerField() に渡され、プロパティが指定されていない場合に使用されます。

QWizard は、最も一般的な Qt ウィジェットを認識しています。これらのウィジェット(またはそのサブクラス)については、property やchangedSignal を指定する必要はありません。以下の表に、これらのウィジェットを一覧表示します:

QWizardPage::registerField()も参照してください 。

void QWizard::setField(const QString &name, const QVariant &value)

「name 」というフィールドの値を「value 」に設定します。

この関数は、ウィザードのどのページでもフィールドを設定するために使用できます。

QWizardPage::registerField()、QWizardPage::setField()、およびfield()も参照してください 。

void QWizard::setOption(QWizard::WizardOption option, bool on = true)

on がtrueの場合、指定されたoption を有効に設定します。そうでない場合は、指定されたoption をクリアします。

options 、testOption()、およびsetWizardStyle()も参照してください 。

void QWizard::setPage(int id, QWizardPage *page)

指定されたpage を、指定されたid を持つウィザードに追加します。

注: ページを追加すると 、startId プロパティの値が明示的に設定されていない場合、その値に影響を与える可能性があります。

関連項目: addPage()、page()、およびpageAdded()。

void QWizard::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)

ロール「which 」のピクマップを「pixmap 」に設定します。

ピクマップは、QWizard がページを表示する際に使用されます。実際にどのピクマップが使用されるかは、wizard style によって異なります。

また、QWizardPage::setPixmap() を使用して、特定のページに対してピクマップを設定することもできます。

pixmap()、QWizardPage::setPixmap()、およびElements of a Wizard Pageも参照してください 。

void QWizard::setSideWidget(QWidget *widget)

指定されたwidget をウィザードの左側に表示するように設定します。WatermarkPixmap (ClassicStyle およびModernStyle )を使用するスタイルの場合、サイドウィジェットは透かしの上に表示されます。その他のスタイルの場合、または透かしが指定されていない場合は、サイドウィジェットはウィザードの左側に表示されます。

nullptr を指定すると、サイドウィジェットは表示されません。

widget がnullptr ではない場合、ウィザードはその親要素を変更します。

それ以前に表示されていたサイドウィジェットは非表示になります。

setSideWidget() を、異なるタイミングで同じウィジェットに対して呼び出すことができます。

ここで設定されたすべてのウィジェットは、他のサイドウィジェット(またはnullptr )を設定した後に個別に親を変更しない限り、ウィザードが破棄される際にウィザードによって削除されます。

デフォルトでは、サイドウィジェットは存在しません。

sideWidget()も参照してください 。

[override virtual] void QWizard::setVisible(bool visible)

QDialog::setVisible (bool visible)を再実装します。

QWidget *QWizard::sideWidget() const

ウィザードの左側にあるウィジェット、またはnullptr を返します。

デフォルトでは、サイドウィジェットは存在しません。

setSideWidget()も参照してください 。

[override virtual] QSize QWizard::sizeHint() const

QDialog::sizeHint() const を再実装します。

bool QWizard::testOption(QWizard::WizardOption option) const

指定されたoption が有効な場合はtrue を返し、そうでない場合はfalseを返します。

options 、setOption()、およびsetWizardStyle()も参照してください 。

[virtual] bool QWizard::validateCurrentPage()

この仮想関数は、ユーザーがNext またはFinish をクリックした際に、QWizard によって呼び出され、最終確認の検証を行います。true を返した場合、次のページが表示されます(またはウィザードが終了します)。そうでない場合は、現在のページが表示されたままになります。

デフォルトの実装では、currentPage() 内でQWizardPage::validatePage() を呼び出します。

可能であれば、`validateCurrentPage()`を再実装するよりも、`mandatory fields `を指定するか、`QWizardPage::isComplete()`を再実装して、`Next `または`Finish `ボタンを無効にする方が、通常は良いコーディングスタイルです。

QWizardPage::validatePage() およびcurrentPage()も参照してください 。

QList<int> QWizard::visitedIds() const

アクセスしたページのIDのリストを、ページにアクセスした順序で返します。

hasVisitedPage()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.