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 を継承し、ウィザードを表します。各ページは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 オプションを有効にしてください。
ノンリニアウィザードの作成
ウィザードの中には、ユーザーによって提供された情報に基づいて異なるトラバーサルパスを許可する、より複雑なものもあります。ライセンス ウィザードの例はこれを示しています。この例では、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); }
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ルック |
プロパティ・ドキュメンテーション
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 オプションが設定されている場合を除く)をクリックしてユーザが離脱する直前に、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 には、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
この仮想関数は、QWizard によって呼び出され、ユーザーがNext ボタンをクリックしたときにどのページを表示するかを調べます。
戻り値は次のページの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 に設定する。
を設定する。
- 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 をクリアします。
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()も参照して ください。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。