QWizardPage 类
The QWizardPage class is the base class for wizard pages. More...
头文件 | #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渲染:一个标题,一个子标题,以及一组位图。有关详细信息,请参阅向导页面元素。一旦页面被添加到向导中(使用QWizard::addPage()或QWizard::setPage()),wizard()将返回关联的QWizard对象指针。
页面提供了五个虚拟函数,这些函数可以被重写以提供自定义行为
- initializePage()在用户点击向导的下一步按钮时调用来初始化页面的内容。如果您想从用户在前几页输入的内容中派生页面的默认值,则需要重写此函数。
- cleanupPage()在用户点击向导的后退按钮时调用来重置页面的内容。
- validatePage()在用户点击下一步或完成时验证页面。它通常用于在用户输入了不完整或无效信息时显示错误消息。
- nextId()返回下一页的ID。这在创建非线性向导时很有用,根据用户提供的详细信息允许不同的遍历路径。
- isComplete()调用以确定下一步和/或完成按钮是否应启用或禁用。如果重写isComplete(),请确保在完整性状态更改时发出completeChanged()。
通常,向导的下一步按钮和完成按钮是互斥的。如果isFinalPage()返回true
,则完成可用;否则,下一步可用。默认情况下,isFinalPage()只在nextId()返回-1时为真。如果您想在一个页面上同时显示下一步和最终(允许用户执行“早期完成”),请调用该页上的setFinalPage(true)。对于支持早期完成的向导,您可能还希望在向导上设置HaveNextButtonOnLastPage和HaveFinishButtonOnEarlyPages选项。
在许多向导中,一个页面的内容可能影响稍后页面的字段默认值。为了便于页面之间的通信,QWizard支持一个"字段"机制,允许您在页面上注册一个字段(例如,一个QLineEdit),并从任何页面访问其值。字段在向导的全局范围内,使得任何单个页面都可以访问其他页面存储的信息,无需在QWizard中放置所有逻辑,或者让页面显式了解彼此。字段通过registerField()注册,并可以使用field()和setField()在任何时候访问。
属性文档
subTitle : QString
此属性持有页面的子标题
副标题由QWizard显示,位于标题和实际页面之间。副标题是可选的。在ClassicStyle和ModernStyle中,使用副标题是使标题出现所必需的。在MacStyle中,副标题显示为实际页面上方的一个文本标签。
副标题可以是纯文本或HTML,具体取决于QWizard::subTitleFormat属性的值。
默认情况下,此属性包含一个空字符串。
访问函数
QString | subTitle() const |
void | setSubTitle(const QString &subTitle) |
另请参阅标题、QWizard::IgnoreSubTitles和向导页面的元素。
title : QString
此属性包含页面的标题
标题由QWizard显示,位于实际页面上方。所有页面都应该有标题。
标题可以是纯文本或HTML,取决于QWizard::titleFormat属性的值。
默认情况下,此属性包含一个空字符串。
访问函数
QString | title() const |
void | setTitle(const QString &title) |
成员函数文档
[明确]
QWizardPage::QWizardPage(QWidget *parent = nullptr)
使用给定的parent构建向导页面。
当页面使用QWizard::addPage()或QWizard::setPage()插入到向导中时,父对象会自动设置为向导。
另请参阅向导。
[虚拟 noexcept]
QWizardPage::~QWizardPage()
析构函数。
QString QWizardPage::buttonText(QWizard::WizardButton which) const
返回此页面上按钮which上的文本。
如果使用了setButtonText设置文本,则返回此文本。如果没有,如果使用了QWizard::setButtonText设置文本,则返回此文本。
默认情况下,按钮上的文本取决于QWizard::wizardStyle。例如,在macOS上,Next按钮称为Continue。
另请参阅setButtonText、QWizard::buttonText和QWizard::setButtonText。
[虚拟]
void QWizardPage::cleanupPage()
当用户通过单击Back离开页面时(除非设置了QWizard::IndependentPages选项),由QWizard::cleanupPage()调用此虚拟函数。
默认情况下,此实现将页面字段重置为其原始值(在调用initializePage()之前具有的值)。
另请参阅 QWizard::cleanupPage(),initializePage()以及QWizard::IndependentPages。
[信号]
void QWizardPage::completeChanged()
每当页面的完成状态(即isComplete的值)发生变化时,都会发出此信号。
如果你重写了isComplete,确保在isComplete的值发生变化时发出completeChanged(),以确保QWizard更新其按钮的启用和禁用状态。
另请参阅isComplete。
[保护]
QVariant QWizardPage::field(const QString &name) const
返回名为name的字段值。
此函数可以用于访问任意页面的字段。它等同于调用QWizard::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。
[虚函数]
void QWizardPage::initializePage()
此虚拟函数由QWizard::initializePage()调用,以便在以下情况下准备页面:在调用QWizard::restart()之后,或用户点击下一步按钮。然而,如果设置了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。
[虚函数]
bool QWizardPage::isComplete() const
此虚拟函数由QWizard调用,以确定是否启用或禁用下一步或完成按钮。
默认实现在某些强制字段被填写时返回true
;否则返回false
。
如果你重写此函数,确保从你的实现的其他部分发出completeChanged,这样QWizard就能更新按钮的启用或禁用状态。一个重写的示例在此处:这里。
另请参阅completeChanged()和isFinalPage。
bool QWizardPage::isFinalPage() const
此函数由 QWizard 调用,以确定是否应为此页面显示 完成 按钮。
默认情况下,如果没有下一页(即 nextId() 返回 -1),则返回 true
;否则,返回 false
。
通过显式调用 setFinalPage(true),您可以允许用户执行“早期完成”。
另请参阅isComplete() 和 QWizard::HaveFinishButtonOnEarlyPages。
[虚拟]
int QWizardPage::nextId() const
此虚拟函数由 QWizard::nextId() 调用,以找到当用户点击 下一步 按钮时应显示的页面。
返回值是下一页的 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() 和向导页面元素。
[保护的]
void QWizardPage::registerField(const QString &name, QWidget *widget, const char *property = nullptr, const char *changedSignal = nullptr)
创建一个名为 name 的字段,与给定的 property 关联给给定的 widget。从那时起,该属性可以通过 field() 和 setField() 访问。
字段属于整个向导,它使得任何单个页面都可以访问由另一个页面存储的信息,而无需在 QWizard 中放置所有逻辑,或者页面需要明确了解彼此。
如果 name 以星号 (*
) 结尾,该字段是必需字段。当页面有必需字段时,只有当所有必需字段都已填写时,下一步 和/或 完成 按钮才可用。这需要指定 changedSignal,以便通知 QWizard 重新检查必需字段存储的值。
QWizard 知道最常用的 Qt 小部件。对于这些(或它们的子类),您不需要指定 property 或 changedSignal。以下表格列出了这些小部件
可以使用 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,则将此页设置为提交页;否则,将其设置为普通页。
提交页表示的动作不能通过点击 后退 或 取消 来撤销。
提交按钮替换了提交页上的 下一步 按钮单击此按钮相当于单击 下一步。
直接从提交页进入的页将 后退 按钮禁用。
另请参阅 isCommitPage()。
[受保护的]
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
并且 完成 按钮可见(如果 isComplete() 返回 true,则启用)。
调用 setFinalPage(false) 后,如果 nextId() 返回 -1,则 isFinalPage() 返回 true
;否则,返回 false
。
参见 isFinalPage(),isComplete() 和 QWizard::HaveFinishButtonOnEarlyPages。
void QWizardPage::setPixmap(QWizard::WizardPixmap which,const QPixmap &pixmap)
设置角色 which 的精灵为 pixmap。
精灵由 QWizard 在显示页面时使用。实际使用的精灵取决于 向导样式。
还可以使用 QWizard::setPixmap() 为整个向导程序设置位图,在这种情况下,它们应用于所有未指定位图的页面。
参见 pixmap(),QWizard::setPixmap() 和 向导页面元素。
[虚函数]
bool QWizardPage::validatePage()
当用户点击 下一步 或 完成 时,此虚函数由 QWizard::validateCurrentPage() 调用以进行一些最后的验证。如果返回 true
,则显示下一页(或向导完成);否则,当前页面保持显示。
默认实现返回 true
。
通常,禁用 下一步 或 完成 按钮(通过指定 必填字段 或重写 isComplete())比重写 validatePage() 更好的风格。
参见 QWizard::validateCurrentPage() 和 isComplete。
[保护]
QWizard *QWizardPage::wizard() const
返回与此页面关联的向导,如果此页面尚未插入到 QWizard 中,则返回 nullptr
。
参见 QWizard::addPage() 和 QWizard::setPage。
© 2024 Qt公司有限公司。本文档中包含的文档贡献是各自所有者的版权。提供的文档根据自由的软件基金会的GNU自由文档许可证版本1.3的条款进行许可。Qt和相关标志是芬兰的Qt公司及其在全球的子公司和分支机构的注册商标。所有其他商标都是各自所有者的财产。