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, …, 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 を継承し、ウィザードを表します。各ページは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); #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 ボタン)を追加することもできます。これは、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つのページのみが表示されます。ページには以下の属性があります:
- Atitle.
- AsubTitle.
- ウィザードのスタイルによって優先されたりされなかったりするpixmapのセット:
- WatermarkPixmap ( と で使用)ClassicStyle ModernStyle
- BannerPixmap ( で使用)ModernStyle
- LogoPixmap ( および で使用)ClassicStyle ModernStyle
- BackgroundPixmap ( で使用)MacStyle
以下の図は、これらの属性がすべて存在し、ModernStyle が使用されていると仮定して、QWizard がこれらの属性をどのようにレンダリングするかを示しています:
subTitle が設定されると、QWizardはそれをヘッダーに表示します。この場合、ヘッダーを装飾するためにBannerPixmap とLogoPixmap も使用します。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つのフィールド、className
、baseClass
、qobjectMacro
を登録しています。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引数として指定することもできます。しかし、QLineEdit 、QCheckBox 、QComboBox のような最も一般的なQtウィジェットでは、QWizardがどのプロパティを探せばよいかを知っているため、この指定は必要ありません。
プロパティが登録される際、名前にアスタリスク(*
)が付加される場合、そのフィールドは必須フィールドです。ページに必須フィールドがある場合、Next および/またはFinish ボタンは、すべての必須フィールドが入力された場合にのみ有効になります。
フィールドが「満たされた」とみなすために、QWizardはフィールドの現在の値が元の値(initializePage ()が呼び出されたときの値)と等しくないことをチェックします。QLineEdit およびQAbstractSpinBox サブクラスでは、QWizardはhasAcceptableInput()が真を返すかどうかもチェックします。
QWizardの必須フィールド・メカニズムは利便性のために提供されています。より強力な(しかし、より面倒な)代替手段は、QWizardPage::isComplete ()を再実装し、ページが完了または不完全になるたびにQWizardPage::completeChanged ()シグナルを発することです。
Next および/またはFinish ボタンの有効/無効状態は、ユーザー入力のバリデーションを実行する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 オプションを有効にしてください。
非直線ウィザードの作成
ウィザードの中には、ユーザーによって提供された情報に基づいて異なるトラバーサルパスを許可する、より複雑なものもあります。ライセンス ウィザードの例はこれを示しています。このウィザードには複数のウィザード ページがあり、選択されたオプションに応じて、ユーザは異なるページに到達することができます。
複雑なウィザードでは、ページは 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); }
QWizardPage 、Trivial Wizard Example、License Wizard Exampleも参照のこと 。
メンバ・タイプのドキュメント
enum QWizard::WizardButton
この列挙型は、ウィザードのボタンを指定します。
定数 | 値 | 説明 |
---|---|---|
QWizard::BackButton | 0 | Back ボタン ( macOS ではGo Back ) |
QWizard::NextButton | 1 | Next ボタン ( macOS ではContinue ) |
QWizard::CommitButton | 2 | Commit ボタン |
QWizard::FinishButton | 3 | Finish ボタン ( macOS ではDone ) |
QWizard::CancelButton | 4 | Cancel ボタン (NoCancelButton も参照) |
QWizard::HelpButton | 5 | Help ボタン (HaveHelpButton も参照) |
QWizard::CustomButton1 | 6 | 最初のユーザー定義ボタン (HaveCustomButton1 も参照) |
QWizard::CustomButton2 | 7 | 二番目のユーザー定義ボタン (HaveCustomButton2 も参照) |
QWizard::CustomButton3 | 8 | 三番目のユーザー定義ボタン (HaveCustomButton3 も参照) |
以下の値は、setButtonLayout() を呼び出すときにのみ有効です:
定数 | 値 | 説明 |
---|---|---|
QWizard::Stretch | 9 | ボタンレイアウトの水平方向の伸縮 |
setButton(),setButtonText(),setButtonLayout(),customButtonClicked()も参照してください 。
enum QWizard::WizardOption
flags QWizard::WizardOptions
この列挙型は、ウィザードのルック&フィールに影響を与える様々なオプションを指定します。
定数 | 値 | 説明 |
---|---|---|
QWizard::IndependentPages | 0x00000001 | ページは互いに独立している(すなわち、互いに値を導出しない)。 |
QWizard::IgnoreSubTitles | 0x00000002 | 字幕が設定されていても、字幕を表示しません。 |
QWizard::ExtendedWatermarkPixmap | 0x00000004 | WatermarkPixmap をウィンドウの端まで拡張する。 |
QWizard::NoDefaultButton | 0x00000008 | Next またはFinish ボタンをダイアログのdefault button にしない。 |
QWizard::NoBackButtonOnStartPage | 0x00000010 | スタートページにBack ボタンを表示しない。 |
QWizard::NoBackButtonOnLastPage | 0x00000020 | 最後のページにBack ボタンを表示しない。 |
QWizard::DisabledBackButtonOnLastPage | 0x00000040 | 最後のページでBack ボタンを無効にする。 |
QWizard::HaveNextButtonOnLastPage | 0x00000080 | 最後のページに(無効な)Next ボタンを表示する。 |
QWizard::HaveFinishButtonOnEarlyPages | 0x00000100 | 最終ページ以外のページに(無効な)Finish ボタンを表示する。 |
QWizard::NoCancelButton | 0x00000200 | Cancel ボタンを表示しない。 |
QWizard::CancelButtonOnLeft | 0x00000400 | Cancel ボタンをBack の左側に置く (Finish やNext の右側ではなく)。 |
QWizard::HaveHelpButton | 0x00000800 | Help 。 |
QWizard::HelpButtonOnRight | 0x00001000 | Help ボタンをボタンレイアウトの一番右(一番左ではなく)に配置する。 |
QWizard::HaveCustomButton1 | 0x00002000 | 最初のユーザー定義ボタン(CustomButton1)を表示する。 |
QWizard::HaveCustomButton2 | 0x00004000 | 二番目のユーザー定義ボタン(CustomButton2)を表示する。 |
QWizard::HaveCustomButton3 | 0x00008000 | 3番目のユーザー定義ボタン(CustomButton3)を表示する。 |
QWizard::NoCancelButtonOnLastPage | 0x00010000 | 最後のページにCancel ボタンを表示しない。 |
WizardOptions型はQFlags<WizardOption>のtypedefです。WizardOption値のORの組み合わせを格納します。
setOptions(),setOption(),testOption()も参照してください 。
enum QWizard::WizardPixmap
この列挙型は、ページに関連付けることができる pixmap を指定します。
定数 | 値 | 説明 |
---|---|---|
QWizard::WatermarkPixmap | 0 | ClassicStyle またはModernStyle ページの左側の背の高い pixmap。 |
QWizard::LogoPixmap | 1 | ClassicStyle またはModernStyle ページのヘッダの右側の小さな pixmap。 |
QWizard::BannerPixmap | 2 | ModernStyle ページヘッダーの背景を占める pixmap。 |
QWizard::BackgroundPixmap | 3 | MacStyle ウィザードの背景を占める pixmap。 |
setPixmap()、QWizardPage::setPixmap()、Elements of a Wizard Pageも参照 。
enum QWizard::WizardStyle
この列挙型は、QWizard がサポートするさまざまな外観を指定します。
定数 | 値 | 説明 |
---|---|---|
QWizard::ClassicStyle | 0 | クラシックウィンドウズ風 |
QWizard::ModernStyle | 1 | モダン Windows ルック |
QWizard::MacStyle | 2 | macOS ルック |
QWizard::AeroStyle | 3 | Windows Aeroルック |
setWizardStyle(),WizardOption,Wizard 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
このプロパティは、ウィザードのルック&フィールに影響を与える様々なオプションを保持します。
デフォルトでは、以下のオプションが設定されています(プラットフォームによって異なります):
- Windows:HelpButtonOnRight.
- macOS:NoDefaultButton およびNoCancelButton.
- X11 および QWS (Qt for Embedded Linux): なし。
アクセス関数:
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)
この仮想関数は、Back (QWizard::IndependentPages オプションが設定されている場合を除く)をクリックしてユーザがページを離れる直前に、id をクリーンアップするためにQWizard によって呼び出される。
デフォルトの実装では、 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 には、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::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
この仮想関数は、ユーザーがNext ボタンをクリックしたときにどのページを表示するかを調べるためにQWizard から呼び出される。
戻り値は次のページのIDであり、次のページがない場合は-1である。
デフォルトの実装では、currentPage ()でQWizardPage::nextId ()を呼び出している。
この関数を再実装することで、動的なページ順序を指定できます。
QWizardPage::nextId() およびcurrentPage()も参照の こと。
QWizardPage *QWizard::page(int id) const
与えられたid を持つページ、またはそのようなページがない場合はnullptr
を返します。
[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 に設定する。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 ボタン)を追加するには、CustomButton1 、CustomButton2 、CustomButton3 で setButtonText() を呼び出してテキストを設定し、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 (またはそのサブクラスの 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 をクリアする。
options 、testOption()、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 (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()を再実装するよりも、Next またはFinish ボタンを無効にする(mandatory fields を指定するか、QWizardPage::isComplete()を再実装する)方が、通常は良いスタイルです。
QWizardPage::validatePage() およびcurrentPage()も参照 。
QList<int> QWizard::visitedIds() const
訪問したページの ID リストを、訪問した順番に返します。
hasVisitedPage()も参照 。
© 2025 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.