QWizardPage Class
QWizardPage クラスは、ウィザードページの基底クラスです。詳細...
| ヘッダー: | #include <QWizardPage> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QWidget |
プロパティ
パブリック関数
| QWizardPage(QWidget *parent = nullptr) | |
| virtual | ~QWizardPage() |
| QString | buttonText(QWizard::WizardButton which) const |
| virtual void | cleanupPage() |
| virtual void | initializePage() |
| bool | isCommitPage() const |
| virtual bool | isComplete() const |
| bool | isFinalPage() const |
| virtual int | nextId() const |
| QPixmap | pixmap(QWizard::WizardPixmap which) const |
| void | setButtonText(QWizard::WizardButton which, const QString &text) |
| void | setCommitPage(bool commitPage) |
| void | setFinalPage(bool finalPage) |
| void | setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap) |
| void | setSubTitle(const QString &subTitle) |
| void | setTitle(const QString &title) |
| QString | subTitle() const |
| QString | title() const |
| virtual bool | validatePage() |
シグナル
| void | completeChanged() |
保護された関数
| QVariant | field(const QString &name) const |
| void | registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr) |
| void | setField(const QString &name, const QVariant &value) |
| QWizard * | wizard() const |
詳細な説明
QWizard ウィザードを表します。各ページは QWizardPage です。独自のウィザードを作成する際は、QWizardPage を直接使用することも、より詳細な制御を行うためにサブクラス化することもできます。
ページには、QWizard によってレンダリングされる以下の属性があります:title 、subTitle 、およびset of pixmaps 。詳細については、Elements of a Wizard Page を参照してください。ページがウィザードに追加されると(QWizard::addPage()またはQWizard::setPage()を使用)、wizard()は、関連付けられたQWizard オブジェクトへのポインタを返します。
`Page` クラスは、カスタム動作を実現するために再実装可能な 5 つの仮想関数を提供しています。
- initializePage() は、ユーザーがウィザードの「Next 」ボタンをクリックした際に、ページのコンテンツを初期化するために呼び出されます。前のページでユーザーが入力した内容に基づいてページのデフォルト値を決定したい場合は、この関数を再実装してください。
- cleanupPage() は、ユーザーがウィザードの [Back ] ボタンをクリックした際に、ページのコンテンツをリセットするために呼び出されます。
- validatePage() は、ユーザーが [Next ] または [Finish] をクリックした際に、ページの検証を行います。ユーザーが不完全または無効な情報を入力した場合にエラーメッセージを表示するためによく使用されます。
- nextId() は、次のページの ID を返します。これは、creating non-linear wizards など、ユーザーが入力した情報に基づいて異なる遷移パスを許可する場合に役立ちます。
- isComplete() は、Next および/またはFinish ボタンを有効にするか無効にするかを決定するために呼び出されます。isComplete() を再実装する場合は、完了状態が変更されるたびにcompleteChanged() が発行されるようにしてください。
通常、ウィザードの「Next 」ボタンと「Finish 」ボタンは排他的です。isFinalPage() がtrue を返す場合、Finish が利用可能になります。それ以外の場合は、Next が利用可能になります。 デフォルトでは、isFinalPage() が true となるのは、nextId() が -1 を返す場合のみです。あるページでNext とFinal を同時に表示したい場合(ユーザーが「早期終了」を行えるようにするため)、そのページでsetFinalPage(true) を呼び出してください。早期終了をサポートするウィザードでは、ウィザードに対してHaveNextButtonOnLastPage およびHaveFinishButtonOnEarlyPages オプションを設定することも検討してください。
多くのウィザードでは、あるページの内容が、後のページのフィールドのデフォルト値に影響を与えることがあります。ページ間の通信を容易にするため、QWizard は"field" mechanism をサポートしており、これにより、ページ上のフィールド(例:QLineEdit )を登録し、どのページからでもその値にアクセスできるようになります。 フィールドはウィザード全体でグローバルに共有され、QWizard にすべてのロジックを記述したり、ページ間で互いを明示的に認識させたりすることなく、どのページからも他のページに保存された情報に簡単にアクセスできるようにします。フィールドはregisterField()を使用して登録され、field()およびsetField()を使用していつでもアクセスできます。
QWizard 、Trivial Wizard Example、およびLicense Wizard Exampleも参照してください 。
プロパティのドキュメント
subTitle : QString
このプロパティには、ページのサブタイトルが格納されます
サブタイトルは、QWizard によって、タイトルと実際のページの間表示されます。サブタイトルは任意です。ClassicStyle およびModernStyle では、ヘッダーを表示させるためにサブタイトルの使用が必要です。MacStyle では、サブタイトルは実際のページすぐ上にテキストラベルとして表示されます。
サブタイトルは、QWizard::subTitleFormat プロパティの値に応じて、プレーンテキストまたはHTMLで指定できます。
デフォルトでは、このプロパティには空の文字列が設定されています。
アクセス関数:
| QString | subTitle() const |
| void | setSubTitle(const QString &subTitle) |
関連項目: title 、QWizard::IgnoreSubTitles 、およびElements of a Wizard Page 。
title : QString
このプロパティはページのタイトルを保持します
タイトルは、実際のページの上部にある「QWizard 」によって表示されます。すべてのページにはタイトルが必要です。
タイトルは、QWizard::titleFormat プロパティの値に応じて、プレーンテキストまたはHTMLで指定できます。
デフォルトでは、このプロパティには空の文字列が格納されています。
アクセス関数:
| QString | title() const |
| void | setTitle(const QString &title) |
「 subTitle 」および「Elements of a Wizard Page 」も参照してください 。
メンバ関数のドキュメント
[explicit] QWizardPage::QWizardPage(QWidget *parent = nullptr)
指定されたparent を使用してウィザードページを作成します。
QWizard::addPage() またはQWizard::setPage() を使用してページをウィザードに挿入すると、親は自動的にウィザードに設定されます。
wizard()も参照してください 。
[virtual noexcept] QWizardPage::~QWizardPage()
デストラクタ。
QString QWizardPage::buttonText(QWizard::WizardButton which) const
このページ上のボタン「which 」に表示されているテキストを返します。
setButtonText() を使用してテキストが設定されている場合は、そのテキストが返されます。そうでない場合、QWizard::setButtonText() を使用してテキストが設定されている場合は、そのテキストが返されます。
デフォルトでは、ボタンのテキストは `QWizard::wizardStyle` に依存します。たとえば、macOS では、`Next ` ボタンは `Continue` と呼ばれます。
「 setButtonText()」、「QWizard::buttonText()」、および「QWizard::setButtonText()」も参照してください 。
[virtual] void QWizardPage::cleanupPage()
この仮想関数は、ユーザーがBack をクリックしてページを離れる際に、QWizard::cleanupPage()によって呼び出されます(QWizard::IndependentPages オプションが設定されている場合は除きます)。
デフォルトの実装では、ページのフィールドを元の値(initializePage()が呼び出される前の値)にリセットします。
QWizard::cleanupPage()、initializePage()、およびQWizard::IndependentPagesも参照してください 。
[signal] void QWizardPage::completeChanged()
このシグナルは、ページの完了状態(つまり、isComplete() の値)が変更されるたびに発火します。
isComplete() を再実装する場合は、isComplete() の値が変更されるたびに completeChanged() を必ず発火させ、QWizard がボタンの有効/無効状態を確実に更新するようにしてください。
isComplete()も参照してください 。
[protected] QVariant QWizardPage::field(const QString &name) const
name という名前のフィールドの値を返します。
この関数は、ウィザードのどのページにあるフィールドにもアクセスするために使用できます。これは、wizard()-> を呼び出すのと同じですfield(name)を呼び出すのと同じです。
例:
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);QWizard::field()、setField()、およびregisterField()も参照してください 。
[virtual] void QWizardPage::initializePage()
この仮想関数は、QWizard::initializePage() によって呼び出され、QWizard::restart() の呼び出しの結果として、あるいはユーザーがNext をクリックした結果として、ページが表示される直前にページの準備を行います。(ただし、QWizard::IndependentPages オプションが設定されている場合、この関数はページが最初に表示される時のみ呼び出されます。)
この関数を再実装することで、前のページのフィールドに基づいて、現在のページのフィールドが適切に初期化されるようにすることができます。例えば:
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);
}デフォルトの実装では何も行われません。
QWizard::initializePage()、cleanupPage()、およびQWizard::IndependentPagesも参照してください 。
bool QWizardPage::isCommitPage() const
このページがコミットページである場合は `true ` を返し、そうでない場合は `false` を返します。
setCommitPage()も参照してください 。
[virtual] bool QWizardPage::isComplete() const
この仮想関数は、QWizard によって呼び出され、Next またはFinish のボタンを有効にするか無効にするかを決定します。
デフォルトの実装では、すべての `mandatory fields ` が埋められている場合は `true ` を返し、そうでない場合は `false` を返します。
この関数を再実装する場合は、isComplete() の値が変更されるたびに、実装の他の部分からcompleteChanged() を必ず発行するようにしてください。これにより、QWizard がボタンの有効/無効状態を確実に更新できるようになります。再実装の例はこちらでご覧いただけます。
completeChanged() およびisFinalPage()も参照してください 。
bool QWizardPage::isFinalPage() const
この関数は、QWizard によって呼び出され、このページに「Finish 」ボタンを表示するかどうかを判断します。
デフォルトでは、次のページがない場合(つまり、nextId() が -1 を返す場合)、true を返し、それ以外の場合はfalse を返します。
setFinalPage(true) を明示的に呼び出すことで、ユーザーに「早期終了」を行わせることができます。
isComplete() およびQWizard::HaveFinishButtonOnEarlyPagesも参照してください 。
[virtual] int QWizardPage::nextId() const
この仮想関数は、QWizard::nextId() によって呼び出され、ユーザーが「Next 」ボタンをクリックした際にどのページを表示するかを決定します。
戻り値は次のページの ID です。次のページがない場合は -1 を返します。
デフォルトでは、この関数は、現在のページの ID より大きい最小の ID を返します。そのような ID が存在しない場合は -1 を返します。
この関数を再実装することで、動的なページ順序を指定することができます。例:
int IntroPage::nextId() const
{
if (evaluateRadioButton->isChecked()) {
return LicenseWizard::Page_Evaluate;
} else {
return LicenseWizard::Page_Register;
}
}QWizard::nextId()も参照してください 。
QPixmap QWizardPage::pixmap(QWizard::WizardPixmap which) const
which ロールに設定されたピクマップを返します。
QWizard::setPixmap() を使用すると、ウィザード全体に対してピクマップを設定することも可能です。この場合、ピクマップが指定されていないすべてのページにその設定が適用されます。
setPixmap()、QWizard::pixmap()、およびElements of a Wizard Pageも参照してください 。
[protected] void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
指定されたwidget の指定されたproperty に関連付けられた、name というフィールドを作成します。これ以降、そのプロパティにはfield()およびsetField()を使用してアクセスできるようになります。
フィールドはウィザード全体で共有されるため、QWizard にすべてのロジックを記述したり、各ページが互いを明示的に認識したりすることなく、どのページからも他のページに保存された情報に簡単にアクセスできるようになります。
name がアスタリスクで終わる場合(* )、そのフィールドは必須フィールドとなります。ページに必須フィールドがある場合、Next および/またはFinish ボタンは、すべての必須フィールドが入力された場合にのみ有効になります。これには、changedSignal を指定して、QWizard に必須フィールドに保存された値を再チェックさせる必要があります。
QWizard は、最も一般的な Qt Widgets を認識しています。これらの Widgets(またはそのサブクラス)については、property やchangedSignal を指定する必要はありません。以下の表に、これらの Widgets 一覧を表示します:
QWizard::setDefaultProperty() を使用すると、このテーブルにエントリを追加したり、既存のエントリを上書きしたりできます。
フィールドが「入力済み」とみなされるかどうかを判断するために、QWizard は単に、その現在の値が元の値(initializePage()が呼び出される前の値)と等しくないかどうかを確認するだけです。QLineEdit の場合、バリデータやマスクを尊重するために、hasAcceptableInput()がtrueを返すかどうかも確認します。
QWizardの必須フィールドの仕組みは利便性のために提供されています。QWizardPage::isComplete() を再実装することで、これをバイパスすることができます。
field()、setField()、およびQWizard::setDefaultProperty()も参照してください 。
void QWizardPage::setButtonText(QWizard::WizardButton which, const QString &text)
このページにおいて、ボタン「which 」のテキストを「text 」に設定します。
デフォルトでは、ボタンのテキストはQWizard::wizardStyle に依存しますが、QWizard::setButtonText() を使用することで、ウィザード全体に対して再定義することができます。
buttonText()、QWizard::setButtonText()、およびQWizard::buttonText()も参照してください 。
void QWizardPage::setCommitPage(bool commitPage)
commitPage が true の場合、このページをコミットページとして設定します。それ以外の場合は、通常のページとして設定します。
コミットページとは、「Back 」や「Cancel 」をクリックしても元に戻せない操作を表すページのことです。
コミットページでは、「Commit 」ボタンが「Next 」ボタンの代わりに表示されます。このボタンをクリックすると、Next をクリックした場合と同様に、単にQWizard::next() が呼び出されます。
コミットページから直接アクセスしたページでは、Back ボタンは無効になっています。
isCommitPage()も参照してください 。
[protected] void QWizardPage::setField(const QString &name, const QVariant &value)
「name 」というフィールドの値を「value 」に設定します。
この関数は、ウィザードのどのページにあるフィールドでも設定に使用できます。これは、wizard()->setField(name, value)を呼び出すのと同じです。
QWizard::setField()、field()、およびregisterField()も参照してください 。
void QWizardPage::setFinalPage(bool finalPage)
finalPage がtrueの場合、このページを明示的に最終ページとして設定します。
setFinalPage(true) を呼び出した後、isFinalPage() はtrue を返し、Finish ボタンが表示されます(isComplete() が true を返す場合は、このボタンは有効になります)。
setFinalPage(false) を呼び出した後、isFinalPage() は、nextId() が -1 を返す場合はtrue を返し、それ以外の場合はfalse を返します。
isFinalPage()、isComplete()、およびQWizard::HaveFinishButtonOnEarlyPagesも参照してください 。
void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
ロール「which 」のピクマップを「pixmap 」に設定します。
ピクマップは、QWizard がページを表示する際に使用されます。実際にどのピクマップが使用されるかは、wizard style によって決まります。
また、QWizard::setPixmap() を使用してウィザード全体に対してピクマップを設定することも可能です。その場合、ピクマップが指定されていないすべてのページに適用されます。
pixmap()、QWizard::setPixmap()、およびElements of a Wizard Pageも参照してください 。
[virtual] bool QWizardPage::validatePage()
この仮想関数は、ユーザーが「Next 」または「Finish 」をクリックして最終確認を行う際に、QWizard::validateCurrentPage() によって呼び出されます。この関数がtrue を返した場合、次のページが表示されます(またはウィザードが終了します)。そうでない場合は、現在のページが表示されたままになります。
デフォルトの実装では、true が返されます。
可能であれば、`validatePage()` を再実装するよりも、`Next ` または `Finish ` ボタンを無効にする(`mandatory fields ` を指定するか、`isComplete()` を再実装する)方が、一般的に良いコーディングスタイルです。
QWizard::validateCurrentPage() およびisComplete()も参照してください 。
[protected] QWizard *QWizardPage::wizard() const
このページに関連付けられているウィザードを返します。ただし、このページがまだQWizard に挿入されていない場合は、nullptr を返します。
QWizard::addPage() およびQWizard::setPage()も参照してください 。
© 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.