class QUiLoader#

QUiLoader 类允许独立应用程序在运行时动态创建用户界面,使用存储在 UI 文件中的信息或在插件路径中指定的信息。了解更多内容...

Inheritance diagram of PySide6.QtUiTools.QUiLoader

摘要#

方法#

虚方法#

注意

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

详细描述#

警告

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

此外,您可以通过继承自己的加载器类来自定义或创建自己的用户界面。

如果您有自定义组件或其他嵌入 Qt Designer 的应用程序,您还可以使用 QtDesigner 模块提供的 QFormBuilder 类,通过 UI 文件(通过 Qt Designer 创建)创建用户界面。

QUiLoader 类提供了一组函数,允许您根据存储在 UI 文件(使用 Qt Designer 创建)中或指定插件路径中可用的信息创建小部件。可以使用 pluginPaths() 函数检索指定的插件路径。同样,可以使用 load() 函数检索 UI 文件的内容。例如

def __init__(self, parent):
    super().__init__(parent)

    loader = QUiLoader()
    file = QFile(":/forms/myform.ui")
    file.open(QFile.ReadOnly)
    myWidget = loader.load(file, self)
    file.close()
    layout = QVBoxLayout()
    layout.addWidget(myWidget)
    setLayout(layout)

availableWidgets() 函数返回一个包含指定插件路径中可用的小部件类名的 QStringList。要创建这些小部件,只需使用 createWidget() 函数。例如

def loadCustomWidget(parent):

    loader = QUiLoader()
    myWidget = QWidget()
    availableWidgets = loader.availableWidgets()
    if availableWidgets.contains("AnalogClock"):
        myWidget = loader.createWidget("AnalogClock", parent)
    return myWidget

要使自定义小部件可供加载器使用,可以使用 addPluginPath() 函数;要删除所有可用的插件,可以调用 clearPluginPaths() 函数。

createAction()createActionGroup()createLayout()createWidget() 函数是 QUiLoader 类在分别需要创建动作、动作组、布局或小部件时内部使用的。因此,您可以扩展 QUiLoader 类并重新实现这些函数以干预用户界面的构建过程。例如,您可能想要在加载表单或创建自定义小部件时创建的动作列表。

有关使用 QUiLoader 类的完整示例,请参阅计算器构建器。

另请参阅

Qt UI 工具 QFormBuilder

__init__([parent=None])#
参数:

parent - QObject

使用给定的 parent 创建一个表单加载器。

addPluginPath(path)#
参数:

path - str

将给定的 path 添加到加载器搜索插件时要查找的路径列表中。

availableLayouts()#
返回类型:

字符串列表

返回可以使用 createLayout() 函数构建的所有可用布局的列表

另请参阅

createLayout()

availableWidgets()#
返回类型:

字符串列表

返回可以使用 createWidget() 函数构建的所有可用的小部件的列表,即给定插件路径中指定的所有小部件。

clearPluginPaths()#

清除在定位插件时加载器将搜索的路径列表。

createAction([parent=None[, name=""]])#
参数:
  • parent - QObject

  • name – 字符串

返回类型:

QAction

创建一个带有指定 parentname 的新动作。

此函数还由 QUiLoader 类在创建小部件时内部使用。因此,您可以扩展 QUiLoader 并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用 QUiLoader 的版本。

createActionGroup[parent=None[, name=""]]#
参数:
  • parent - QObject

  • name – 字符串

返回类型:

QActionGroup

使用指定的 parentname 创建一个新的操作组。

此函数还由 QUiLoader 类在创建小部件时内部使用。因此,您可以扩展 QUiLoader 并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用 QUiLoader 的版本。

createLayoutclassName[, parent=None[, name=""]]#
参数:
  • className – 字符串

  • parent - QObject

  • name – 字符串

返回类型:

QLayout

使用由 className 指定的类创建一个新的布局,并使用指定的 parentname

此函数还由 QUiLoader 类在创建小部件时内部使用。因此,您可以扩展 QUiLoader 并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用 QUiLoader 的版本。

另请参阅

createWidget() load()

createWidgetclassName[, parent=None[, name=""]]#
参数:
  • className – 字符串

  • parentQWidget

  • name – 字符串

返回类型:

QWidget

使用由 className 指定的类创建一个新的小部件,并使用指定的 parentname。您可以使用此函数创建由 availableWidgets() 函数返回的小部件。

此函数还由 QUiLoader 类在创建小部件时内部使用。因此,您可以扩展 QUiLoader 并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用 QUiLoader 的版本。

另请参阅

availableWidgets() load()

errorString()#
返回类型:

str

返回对load()中发生的最后一个错误的人类可读描述。

另请参阅

load()

isLanguageChangeEnabled()#
返回类型:

bool

如果启用了语言更改时的动态重翻译,则返回true;否则返回false。

isTranslationEnabled()#
返回类型:

bool

load(arg__1[, parentWidget=None])#
参数:
  • arg__1PyPathLike

  • parentWidgetQWidget

返回类型:

QWidget

load(device[, parentWidget=None])
参数:
返回类型:

QWidget

从给定的device中加载表单,并创建一个新的具有给定parentWidget的控件,以容纳其内容。

pluginPaths()#
返回类型:

字符串列表

返回一个列表,命名了在定位自定义控件插件时搜索路径。

registerCustomWidget(customWidgetType)#
参数:

customWidgetType – 对象

将Python创建的自定义小部件注册到Q UiLoader中,以便在加载.ui文件时能够识别。自定义小部件类型通过customWidgetType参数传递。如果您想在界面中覆盖某些小部件的虚拟方法,则需要此方法,因为替换原方法对基于.ui文件内容的Q UiLoader创建的小部件无效。

(记住,通过替换原方法使用虚拟方法是一种非常危险的实践!)

让我们看看一个明显的例子。如果您想创建一个新的小部件,那么很可能会覆盖QWidget的paintEvent()方法。

class Circle(QWidget):
    def paintEvent(self, event):
        with QPainter(self) as painter:
            painter.setPen(self.pen)
            painter.setBrush(QBrush(self.color))
            painter.drawEllipse(event.rect().center(), 20, 20)

# ...

loader = QUiLoader()
loader.registerCustomWidget(Circle)
circle = loader.load('circle.ui')
circle.show()

# ...
setLanguageChangeEnabled(enabled)#
参数:

enabled – bool

如果enabled为true,则此加载器加载的用户界面在接收到语言更改事件时将自动重新翻译。否则,用户界面将不会重新翻译。

setTranslationEnabled(enabled)#
参数:

enabled – bool

setWorkingDirectory(dir)#
参数:

dirQDir

设置加载器的当前工作目录为dir。加载器将在此目录的相对路径中查找其他资源,如图标和资源文件。

另请参阅

workingDirectory()

workingDirectory()#
返回类型:

QDir

返回加载器的工作目录。

另请参阅

setWorkingDirectory()