QWizardPage Class
QWizardPageクラスは、ウィザード・ページの基本クラスです。詳細...
Header: | #include <QWizardPage> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Inherits: | 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 が使用可能になる。デフォルトでは、nextId() が -1 を返すときのみ、isFinalPage() が真になります。あるページでNext とFinal を同時に表示したい場合(ユーザーに 「早期終了」を実行させたい場合)、そのページでsetFinalPage (true)を呼び出します。早期終了をサポートするウィザードでは、HaveNextButtonOnLastPage とHaveFinishButtonOnEarlyPages オプションも設定するとよいでしょう。
多くのウィザードでは、ページの内容が後のページのフィールドのデフォルト値に影響することがあります。ページ間の通信を簡単にするために、QWizard は、"field" mechanism をサポートしています。これは、あるページでフィールド(例えば、QLineEdit )を登録し、どのページからでもその値にアクセスできるようにするものです。フィールドはウィザード全体に対してグローバルであり、QWizard にすべてのロジックを入れたり、ページが互いについて明示的に知ることなく、任意の1つのページが他のページによって保存された情報にアクセスすることを容易にします。フィールドはregisterField() を使用して登録され、field() とsetField() を使用していつでもアクセスできます。
QWizard 、Trivial Wizard Example、License Wizard Exampleも参照してください 。
プロパティ Documentation
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()
この仮想関数は、(QWizard::IndependentPages オプションが設定されていない限り)ユーザがBack をクリックしてページを離れると、QWizard::cleanupPage ()によって呼び出されます。
デフォルトの実装では、ページのフィールドは元の値(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::restart()が呼び出された結果、またはユーザがNext をクリックした結果、ページが表示される直前に、QWizard::initializePage()によって呼び出され、ページを準備します(ただし、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 ボタンを表示するかどうかを決定します。
デフォルトでは、次のページがない場合はtrue
を返し(つまり、nextId() は -1 を返し)、そうでない場合は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 に設定されたpixmapを返す。
QWizard::setPixmapこの場合、pixmapを指定しないすべてのページに適用されます。
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 にすべてのロジックを入れたり、ページが互いについて明示的に知ることなく、任意の1つのページが他のページによって格納された情報に簡単にアクセスできるようにします。
name の末尾がアスタリスク (*
) である場合、そのフィールドは必須フィールドです。ページに必須フィールドがある場合、Next および/またはFinish ボタンは、すべての必須フィールドが満たされたときのみ有効になります。そのためには、changedSignal を指定して、QWizard に、必須フィールドに格納されている値を再チェックするように指示する必要がある。
QWizard は最も一般的なQtウィジェットを知っています。これら(またはそのサブクラス)では、 や を指定する必要はありません。 以下の表は、これらのウィジェットの一覧です:property changedSignal
QWizard::setDefaultProperty() を使用すると、このテーブルにエントリを追加したり、既存のエントリを上書きしたりすることができる。
フィールドを "埋めた "とみなすには、QWizard で、現在の値が元の値 (initializePage() をコールする前の値) と等しくないことをチェックする。QLineEdit については、hasAcceptableInput() が真を返すかどうかもチェックする。
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 が真の場合、このページをコミット・ページに設定します。そうでない場合、通常のページに設定します。
コミットページとは、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)を呼び出した後、nextId() が -1 を返す場合、isFinalPage() はtrue
を返し、そうでない場合はfalse
を返す。
isFinalPage()、isComplete()、QWizard::HaveFinishButtonOnEarlyPagesも参照 。
void QWizardPage::setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap)
ロールwhich のpixmapをpixmap に設定します。
pixmapは、ページを表示するときにQWizard 。どの pixmap が実際に使用されるかは、wizard style に依存します。
pixmapは、QWizard::setPixmap()を使用してウィザード全体に設定することもできます。この場合、pixmapを指定していないすべてのページに適用されます。
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() も参照して ください。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。