PySide6.QtWidgets.QWizardPage

class QWizardPage

QWizardPage 类是向导页面的基类。更多

PySide6.QtWidgets.QWizardPage 的继承图

概要

属性

方法

虚拟方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QWizard 表示一个向导。每个页面是一个 QWizardPage。当你创建自己的向导时,你可以直接使用 QWizardPage,或者你可以对其进行子类化以获得更多控制。

一个页面具有以下属性,这些属性由QWizard渲染:一个title,一个subTitle,以及一组set of pixmaps。详情请参见Elements of a Wizard Page。一旦页面被添加到向导中(使用addPage()setPage()),wizard()将返回一个指向关联的QWizard对象的指针。

页面提供了五个可以重新实现的虚拟函数,以提供自定义行为:

  • initializePage() 在用户点击向导的下一步按钮时被调用,用于初始化页面的内容。如果你想根据用户在前几页输入的内容来推导页面的默认值,这是需要重新实现的函数。

  • cleanupPage() 当用户点击向导的返回按钮时,调用此函数以重置页面的内容。

  • validatePage() 当用户点击“下一步”或“完成”时验证页面。通常用于在用户输入不完整或无效信息时显示错误消息。

  • nextId() 返回下一页的ID。这在创建 非线性 向导时非常有用,这些向导允许根据用户提供的信息选择不同的遍历路径。

  • isComplete() 被调用来确定“下一步”和/或“完成”按钮是否应该启用或禁用。如果你重新实现了 isComplete() ,也要确保在完成状态发生变化时发出 completeChanged()

通常情况下,向导中的“下一步”按钮和“完成”按钮是互斥的。如果isFinalPage()返回true,则“完成”按钮可用;否则,“下一步”按钮可用。默认情况下,isFinalPage()仅在nextId()返回-1时为true。如果您希望在某个页面上同时显示“下一步”和“完成”按钮(允许用户执行“提前完成”),请在该页面上调用setFinalPage (true)。对于支持提前完成的向导,您可能还需要在向导中设置HaveNextButtonOnLastPageHaveFinishButtonOnEarlyPages选项。

在许多向导中,页面的内容可能会影响后续页面字段的默认值。为了便于页面之间的通信,QWizard 支持一个 "field" 机制,允许您在页面上注册一个字段(例如,QLineEdit),并从任何页面访问其值。字段对整个向导是全局的,使得任何单个页面都可以轻松访问由另一个页面存储的信息,而无需将所有逻辑放在 QWizard 中,也无需让页面明确知道彼此。字段使用 registerField() 注册,并且可以随时使用 field()setField() 访问。

另请参阅

QWizard 简单向导示例 许可证向导示例

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property subTitleᅟ: str

此属性保存页面的副标题。

副标题由QWizard显示,位于标题和实际页面之间。副标题是可选的。在ClassicStyleModernStyle中,使用副标题是使标题显示的必要条件。在MacStyle中,副标题显示为实际页面上方的文本标签。

副标题可以是纯文本或HTML,具体取决于subTitleFormat属性的值。

默认情况下,此属性包含一个空字符串。

另请参阅

title IgnoreSubTitles Elements of a Wizard Page

Access functions:
property titleᅟ: str

此属性保存页面的标题。

标题由QWizard显示在实际页面的上方。所有页面都应该有一个标题。

标题可以是纯文本或HTML,具体取决于titleFormat属性的值。

默认情况下,此属性包含一个空字符串。

另请参阅

subTitle Elements of a Wizard Page

Access functions:
__init__([parent=None])
Parameters:

父级QWidget

使用给定的parent构建一个向导页面。

当页面使用addPage()setPage()插入到向导中时,父级会自动设置为向导。

另请参阅

wizard()

buttonText(which)
Parameters:

哪个WizardButton

Return type:

字符串

返回此页面上按钮 which 的文本。

如果使用setButtonText()设置了文本,则返回此文本。否则,如果使用setButtonText()设置了文本,则返回此文本。

默认情况下,按钮上的文本取决于wizardStyle。例如,在macOS上,Next按钮被称为Continue。

cleanupPage()

当用户通过点击返回离开页面时(除非设置了IndependentPages选项),此虚拟函数由cleanupPage()调用。

默认实现将页面的字段重置为其原始值(在调用initializePage()之前的值)。

completeChanged()

每当页面的完整状态(即isComplete()的值)发生变化时,都会发出此信号。

如果你重新实现了isComplete(),请确保在isComplete()的值发生变化时发出completeChanged(),以确保QWizard更新其按钮的启用或禁用状态。

另请参阅

isComplete()

field(name)
Parameters:

name – str

Return type:

对象

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回名为 name 的字段的值。

此函数可用于访问向导任何页面上的字段。它相当于调用 wizard() ->``name`` :meth:` ` )。

示例:

emailAddress = field("details.email").toString()
licenseText = tr("<u>First-Time License Agreement:</u> "
                 "You can use self software subject to the license "
                 "you will receive by email sent to %1.").arg(emailAddress)
initializePage()

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

这个虚拟函数由initializePage()调用,以在页面显示之前进行准备,无论是由于调用了restart(),还是用户点击了下一步。(但是,如果设置了IndependentPages选项,则此函数仅在页面第一次显示时调用。)

通过重新实现此函数,您可以确保页面的字段根据之前页面的字段正确初始化。例如:

def initializePage(self):

    licenseText = QString()
    if wizard().hasVisitedPage(LicenseWizard.Page_Evaluate):
        licenseText = tr("<u>Evaluation License Agreement:</u> "
                         "You can use self software for 30 days and make one "
                         "backup, but you are not allowed to distribute it.")
     elif wizard().hasVisitedPage(LicenseWizard.Page_Details):
        emailAddress = field("details.email").toString()
        licenseText = tr("<u>First-Time License Agreement:</u> "
                         "You can use self 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)

默认实现不执行任何操作。

isCommitPage()
Return type:

布尔

如果此页面是提交页面,则返回 true;否则返回 false

另请参阅

setCommitPage()

isComplete()
Return type:

布尔

这个虚函数由QWizard调用,用于确定“下一步”或“完成”按钮是否应启用或禁用。

默认实现返回true如果所有mandatory fields都已填写;否则,返回false

如果你重新实现这个函数,请确保在你的实现的其他部分中,每当isComplete()的值发生变化时,发出completeChanged()。这确保了QWizard更新其按钮的启用或禁用状态。重新实现的示例可以在这里找到。

isFinalPage()
Return type:

布尔

此函数由QWizard调用,用于确定是否应为此页面显示完成按钮。

默认情况下,如果没有下一页(即nextId()返回-1),则返回true;否则,返回false

通过显式调用 setFinalPage (true),您可以允许用户执行“提前完成”。

nextId()
Return type:

整数

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

这个虚拟函数由nextId()调用,用于确定当用户点击“下一步”按钮时显示哪个页面。

返回值是下一页的ID,如果没有下一页则为-1。

默认情况下,此函数返回大于当前页面ID的最小ID,如果没有这样的ID,则返回-1。

通过重新实现此函数,您可以指定动态页面顺序。例如:

def nextId(self):

另请参阅

nextId()

pixmap(which)
Parameters:

哪个WizardPixmap

Return type:

QPixmap

返回为角色 which 设置的 pixmap。

也可以使用setPixmap()为整个向导设置Pixmaps,在这种情况下,它们适用于所有未指定Pixmap的页面。

另请参阅

setPixmap() pixmap() 向导页面的元素

registerField(name, widget, property, changedSignal)
Parameters:
  • name – str

  • widgetQWidget

  • property – str

  • changedSignalPySideSignalInstance

registerField(name, widget[, property=None[, changedSignal=None]])
Parameters:
  • name – str

  • widgetQWidget

  • property – str

  • changedSignal – str

创建一个名为name的字段,该字段与给定widget的给定property相关联。从那时起,可以使用field()setField()访问该属性。

字段在整个向导中是全局的,使得任何单个页面都可以轻松访问由另一个页面存储的信息,而无需将所有逻辑放在QWizard中,也不需要页面之间明确了解彼此。

如果 name 以星号 (*) 结尾,则该字段为必填字段。当页面有必填字段时,只有在所有必填字段都填写完毕后,Next 和/或 Finish 按钮才会启用。这需要指定一个 changedSignal,以告诉 QWizard 重新检查必填字段存储的值。

QWizard 知道最常见的 Qt 小部件。对于这些(或它们的子类),您不需要指定 propertychangedSignal。下表列出了这些小部件:

你可以使用setDefaultProperty()来向此表添加条目或覆盖现有条目。

要认为一个字段“已填写”,QWizard 只需检查其当前值是否不等于其原始值(在调用 initializePage() 之前的值)。对于 QLineEdit,它还会检查 hasAcceptableInput() 是否返回 true,以尊重任何验证器或掩码。

QWizard 的必填字段机制是为了方便而提供的。可以通过重新实现 isComplete() 来绕过它。

setButtonText(which, text)
Parameters:

设置按钮上的文本为text在此页面上。

默认情况下,按钮上的文本取决于wizardStyle,但可以使用setButtonText()为整个向导重新定义。

setCommitPage(commitPage)
Parameters:

commitPage – 布尔值

如果commitPage为true,则将此页面设置为提交页面;否则,将其设置为普通页面。

提交页面是一个代表无法通过点击返回或取消来撤销操作的页面。

提交页面上的“下一步”按钮被替换为“提交”按钮。点击此按钮就像点击“下一步”一样,只是调用next()

直接从提交页面进入的页面,其返回按钮将被禁用。

另请参阅

isCommitPage()

setField(name, value)
Parameters:
  • name – str

  • value – 对象

将名为name的字段的值设置为value

此函数可用于设置向导任何页面上的字段。它等同于调用 wizard() ->``name`` :meth:` ` , value)。

setFinalPage(finalPage)
Parameters:

finalPage – 布尔值

如果finalPage为true,则明确将此页面设置为最终页面。

调用setFinalPage(true)后,isFinalPage()返回true,并且完成按钮可见(如果isComplete()返回true,则启用)。

调用setFinalPage(false)后,如果nextId()返回-1,则isFinalPage()返回true;否则,返回false

setPixmap(which, pixmap)
Parameters:

将角色 which 的 pixmap 设置为 pixmap

pixmaps 由 QWizard 在显示页面时使用。实际使用的 pixmaps 取决于 wizard style

也可以使用setPixmap()为整个向导设置Pixmaps,在这种情况下,它们适用于所有未指定Pixmap的页面。

另请参阅

pixmap() setPixmap() 向导页面的元素

setSubTitle(subTitle)
Parameters:

副标题 – str

另请参阅

subTitle()

属性 subTitleᅟ 的设置器。

setTitle(title)
Parameters:

标题 – str

另请参阅

title()

属性 titleᅟ 的设置器。

subTitle()
Return type:

字符串

另请参阅

setSubTitle()

属性 subTitleᅟ 的获取器。

title()
Return type:

字符串

另请参阅

setTitle()

属性 titleᅟ 的获取器。

validatePage()
Return type:

布尔

当用户点击“下一步”或“完成”时,此虚拟函数由validateCurrentPage()调用,以执行一些最后的验证。如果它返回true,则显示下一页(或向导完成);否则,当前页面保持不变。

默认实现返回 true

在可能的情况下,通常更好的做法是禁用“下一步”或“完成”按钮(通过指定mandatory fields或重新实现isComplete()),而不是重新实现validatePage()。

wizard()
Return type:

QWizard

返回与此页面关联的向导,如果此页面尚未插入到QWizard中,则返回None

另请参阅

addPage() setPage()