PySide6.QtUiTools.QUiLoader

class QUiLoader

QUiLoader 类使独立应用程序能够在运行时使用存储在UI文件中的信息或在插件路径中指定的信息动态创建用户界面。更多

PySide6.QtUiTools.QUiLoader 的继承图

概要

方法

虚拟方法

注意

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

详细描述

警告

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

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

如果您有一个自定义组件或嵌入Qt Widgets Designer的应用程序,您也可以使用QtDesigner模块提供的QFormBuilder类从UI文件创建用户界面。

QUiLoader 类提供了一系列函数,允许你基于存储在UI文件中的信息(使用Qt Widgets 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 用户界面工具 QFormBuilder

__init__([parent=None])
Parameters:

父对象QObject

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

addPluginPath(path)
Parameters:

路径 – 字符串

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

availableLayouts()
Return type:

字符串列表

返回一个列表,列出所有可以使用createLayout()函数构建的可用布局的名称

另请参阅

createLayout()

availableWidgets()
Return type:

字符串列表

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

clearPluginPaths()

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

createAction([parent=None[, name=""]])
Parameters:
Return type:

QAction

使用给定的parentname创建一个新的动作。

该函数也被QUiLoader类在创建小部件时内部使用。因此,你可以子类化QUiLoader并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader的版本。

createActionGroup([parent=None[, name=""]])
Parameters:
Return type:

QActionGroup

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

该函数也被QUiLoader类在创建小部件时内部使用。因此,你可以子类化QUiLoader并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader的版本。

createLayout(className[, parent=None[, name=""]])
Parameters:
  • className – str

  • parentQObject

  • name – str

Return type:

QLayout

使用由className指定的类,创建一个具有给定parentname的新布局。

该函数也被QUiLoader类在创建小部件时内部使用。因此,你可以子类化QUiLoader并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,请确保首先调用QUiLoader的版本。

另请参阅

createWidget() load()

createWidget(className[, parent=None[, name=""]])
Parameters:
  • className – str

  • parentQWidget

  • name – str

Return type:

QWidget

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

该函数也被QUiLoader类在创建小部件时内部使用。因此,你可以子类化QUiLoader并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader的版本。

另请参阅

availableWidgets() load()

errorString()
Return type:

字符串

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

另请参阅

load()

isLanguageChangeEnabled()
Return type:

布尔

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

isTranslationEnabled()
Return type:

布尔

load(arg__1[, parentWidget=None])
Parameters:
  • arg__1PyPathLike

  • parentWidgetQWidget

Return type:

QWidget

load(device[, parentWidget=None])
Parameters:
Return type:

QWidget

从给定的device加载表单,并使用给定的parentWidget创建一个新的小部件来容纳其内容。

pluginPaths()
Return type:

字符串列表

返回一个列表,命名加载器在定位自定义小部件插件时将搜索的路径。

registerCustomWidget(customWidgetType)
Parameters:

customWidgetType – 对象

将Python创建的自定义小部件注册到QUiLoader,以便在加载.ui文件时能够识别。自定义小部件类型通过customWidgetType参数传递。当您想要覆盖界面中某些小部件的虚拟方法时,这是必要的,因为基于.ui文件内容由QUiLoader创建的小部件无法使用鸭子类型。

(记住 duck punching virtual methods is an invitation for your own demise!)

让我们看一个明显的例子。如果你想创建一个新的小部件,你可能会最终重写 QWidgetpaintEvent() 方法。

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)
Parameters:

enabled – 布尔值

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

setTranslationEnabled(enabled)
Parameters:

enabled – 布尔值

setWorkingDirectory(dir)
Parameters:

dirQDir

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

另请参阅

workingDirectory()

workingDirectory()
Return type:

QDir

返回加载器的工作目录。

另请参阅

setWorkingDirectory()