QWizard Class

QWizardクラスは、ウィザードのフレームワークを提供します。さらに...

Header: #include <QWizard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QDialog

パブリックタイプ

enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, …, Stretch }
enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, …, NoCancelButtonOnLastPage }
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 を継承し、ウィザードを表します。各ページはQWizardPageQWidget サブクラス)です。独自のウィザードを作成するには、これらのクラスを直接使用することもできますし、サブクラス化して制御を強化することもできます。

簡単な例

次の例では、ウィザード・ページを作成し、ウィザードに追加する方法を説明します。より高度な例については、ライセンス・ウィザードを参照してください。

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

#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();
}

ウィザードのルック&フィール

QWizardは4つのウィザード・ルックをサポートしています:

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

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

ウィザードのスタイルに加えて、ウィザードの外観を制御するいくつかのオプションがあります。これらはsetOption() またはsetOptions() を使用して設定できます。例えば、HaveHelpButton は、QWizardに他のウィザード・ボタンと共にHelp ボタンを表示させます。

また、setButtonLayout()を使用して、ウィザード・ボタンの順序を任意の順序に変更することもできます。さらに、ボタン行に最大3つのカスタム・ボタン(例えば、Print ボタン)を追加することもできます。これは、CustomButton1CustomButton2CustomButton3setButton() またはsetButtonText() を呼び出してボタンを設定し、HaveCustomButton1HaveCustomButton2HaveCustomButton3 オプションを有効にすることで実現できます。ユーザーがカスタム・ボタンをクリックすると、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はそれをヘッダーに表示します。この場合、ヘッダーを装飾するためにBannerPixmapLogoPixmap も使用します。WatermarkPixmap は左側、ヘッダーの下に表示されます。下部には、ユーザがページをナビゲートするためのボタンが並んでいます。

ページ自体(QWizardPage ウィジェット)は、ヘッダー、透かし、ボタン列の間の領域を占めます。通常,ページはQWizardPage ,その上にQGridLayout ,標準的な子ウィジェット(QLabels,QLineEditsなど)がインストールされている.

ウィザードのスタイルがMacStyle の場合、ページの見た目は根本的に異なります:

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

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

フィールドの登録と使用

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

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

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

上記のコードでは、3つの子ウィジェットに関連する3つのフィールド、classNamebaseClassqobjectMacro を登録しています。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() を使ってフィールドを作成するとき、一意のフィールド名とウィジェットを渡します。また、Qtプロパティ名と "changed "シグナル(プロパティが変更されたときに発信されるシグナル)を第3、第4引数として渡すことができます。しかし、QLineEditQCheckBoxQComboBox のような最も一般的なQtウィジェットでは、QWizardがどのプロパティを探せばよいかを知っているため、これは必要ありません。

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

フィールドが「満たされた」とみなすために、QWizardはフィールドの現在の値が元の値(initializePage ()が呼び出されたときの値)と等しくないことをチェックします。QLineEdit およびQAbstractSpinBox サブクラスでは、QWizardはhasAcceptableInput()が真を返すかどうかもチェックします。

QWizardの必須フィールド・メカニズムは利便性のために提供されています。より強力な(しかし、より面倒な)代替手段は、QWizardPage::isComplete ()を再実装し、ページが完了または不完全になるたびにQWizardPage::completeChanged ()シグナルを発することです。

NextFinish ボタンの有効/無効状態は、ユーザー入力のバリデーションを行う1つの方法である。もう1つの方法は、validateCurrentPage()(またはQWizardPage::validatePage())を再実装して、最後のバリデーションを実行することです(そして、ユーザーが不完全または無効な情報を入力した場合はエラーメッセージを表示します)。関数がtrue を返した場合は、次のページが表示されます(またはウィザードが終了します)。

リニアウィザードの作成

ほとんどのウィザードは、1ページの後に2ページが続き、最後のページまで続く直線的な構造を持っています。Trivial Wizardの例はそのようなウィザードです。QWizardでは、QWizardPagesをインスタンス化し、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 オプションを有効にしてください。

ノンリニアウィザードの作成

ウィザードの中には、ユーザーによって提供された情報に基づいて異なるトラバーサルパスを許可する、より複雑なものもあります。ライセンス ウィザードの例はこれを示しています。この例では、5 つのウィザード ページが用意されており、選択されたオプショ ンに応じて、ユーザは異なるページに到達することができます。

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

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

QWizardPageTrivial Wizard ExampleLicense Wizard Exampleも参照のこと

メンバ・タイプのドキュメント

enum QWizard::WizardButton

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

定数説明
QWizard::BackButton0Back ボタン ( macOS ではGo Back )
QWizard::NextButton1Next ボタン ( macOS ではContinue )
QWizard::CommitButton2Commit ボタン
QWizard::FinishButton3Finish ボタン ( macOS ではDone )
QWizard::CancelButton4Cancel ボタン (NoCancelButton も参照)
QWizard::HelpButton5Help ボタン (HaveHelpButton も参照)
QWizard::CustomButton16最初のユーザー定義ボタン (HaveCustomButton1 も参照)
QWizard::CustomButton27二番目のユーザー定義ボタン (HaveCustomButton2 も参照)
QWizard::CustomButton38三番目のユーザー定義ボタン (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::NoCancelButton0x00000200Cancel ボタンを表示しない。
QWizard::CancelButtonOnLeft0x00000400Cancel ボタンをBack の左側に置く (FinishNext の右側ではなく)。
QWizard::HaveHelpButton0x00000800Help
QWizard::HelpButtonOnRight0x00001000Help ボタンをボタンレイアウトの一番右(一番左ではなく)に配置する。
QWizard::HaveCustomButton10x00002000最初のユーザー定義ボタン(CustomButton1)を表示する。
QWizard::HaveCustomButton20x00004000二番目のユーザー定義ボタン(CustomButton2)を表示する。
QWizard::HaveCustomButton30x000080003番目のユーザー定義ボタン(CustomButton3)を表示する。
QWizard::NoCancelButtonOnLastPage0x00010000最後のページにCancel ボタンを表示しない。

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

setOptions(),setOption(),testOption()も参照してください

enum QWizard::WizardPixmap

この列挙型は、ページに関連付けることができる pixmap を指定します。

定数説明
QWizard::WatermarkPixmap0ClassicStyle またはModernStyle ページの左側の背の高い pixmap。
QWizard::LogoPixmap1ClassicStyle またはModernStyle ページのヘッダの右側の小さな pixmap。
QWizard::BannerPixmap2ModernStyle ページヘッダーの背景を占める pixmap。
QWizard::BackgroundPixmap3MacStyle ウィザードの背景を占める pixmap。

setPixmap()、QWizardPage::setPixmap()、Elements of a Wizard Pageも参照のこと

enum QWizard::WizardStyle

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

定数説明
QWizard::ClassicStyle0クラシックウィンドウズ風
QWizard::ModernStyle1モダン Windows ルック
QWizard::MacStyle2macOS ルック
QWizard::AeroStyle3Windows Aeroルック

setWizardStyle()、WizardOptionWizard Look and Feelも参照

プロパティ・ドキュメンテーション

currentId : int

このプロパティは現在のページのIDを保持する

このプロパティを直接設定することはできない。現在のページを変更するには、next()、back()、またはrestart() を呼び出します。

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

アクセス関数:

int currentId() const
void setCurrentId(int id)

Notifierシグナル:

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)

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

デフォルトの実装では、 page(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 には、CustomButton1CustomButton2CustomButton3 のいずれかを指定します。

デフォルトでは、カスタム・ボタンは表示されません。HaveCustomButton1HaveCustomButton2 、または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::restart() が呼び出された結果、またはユーザがNext をクリックした結果、id ページが表示される直前に、QWizard によって呼び出されて準備します (ただし、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

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

戻り値は次のページの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 に設定された pixmap を返します。

デフォルトでは、設定されている pixmap は 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 ボタン)を追加するには、CustomButton1 からCustomButton3 を指定して setButton() を呼び出し、HaveCustomButton1 からHaveCustomButton3 オプションを使用してボタンを表示する方法があります。

button()、setButtonText()、setButtonLayout()、optionsも参照

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

ボタンの表示順序をlayout に設定します。layoutWizardButtonのリストです。

デフ ォル ト の レ イ ア ウ ト は、 設定 さ れてい る オプシ ョ ン (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 ボタン)を追加するには、CustomButton1CustomButton2CustomButton3 で setButtonText() を呼び出してテキストを設定し、HaveCustomButton1HaveCustomButton2HaveCustomButton3 オプションを使用してボタンを表示させる方法があります。

ボタン・テキストは、QWizardPage::setButtonText ()を使用して、ページごとに設定することもできます。

buttonText()、setButton()、button()、setButtonLayout()、setOptions()、QWizardPage::setButtonText()も参照のこと

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

currentIdid の間のページを訪問せずに、currentIdid に設定する。

を設定する。

  • wizardがページを保持していない
  • 現在のページが無効
  • 指定されたページがcurrentId() と等しい
  • 与えられたページが範囲外

注: ページが前方にスキップされ、id が 0 の場合、ページ訪問履歴は削除されます。

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

currentId()も参照

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

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

デフォルト・プロパティは、className (またはそのサブクラスの 1 つ)のインスタンスが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 が真の場合、指定されたoption を有効に設定します。そうでない場合、指定されたoption をクリアします。

optionstestOption()、setWizardStyle()も参照

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

与えられたid で、与えられたpage をウィザードに追加します。

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

addPage()、page()、pageAdded()も参照して ください。

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

ロールwhich のpixmapをpixmap に設定します。

pixmapは、ページを表示するときにQWizard 。どの pixmap が実際に使用されるかは、wizard style に依存します。

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

pixmap()、QWizardPage::setPixmap()、Elements of a Wizard Pageも参照のこと

void QWizard::setSideWidget(QWidget *widget)

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

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

widgetnullptr でない場合、ウィザードはそれを再表示します。

以前のサイド・ウィジェットは非表示になります。

同じウィジェットで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 を返す。

optionssetOption()、setWizardStyle()も参照

[virtual] bool QWizard::validateCurrentPage()

この仮想関数は、ユーザがNext またはFinish をクリックして最後の検証を行うときにQWizard によって呼び出されます。これがtrue を返すと、次のページが表示されます(またはウィザードが終了します)。

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

可能な場合、validateCurrentPage()を再実装するよりも、Next またはFinish ボタンを無効にする(mandatory fields を指定するか、QWizardPage::isComplete()を再実装する)方が、通常は良いスタイルです。

QWizardPage::validatePage() およびcurrentPage()も参照

QList<int> QWizard::visitedIds() const

訪問したページの ID のリストを、訪問した順番に返します。

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

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。