PySide6.QtUiTools.QUiLoader¶
- class QUiLoader¶
QUiLoader
类使独立应用程序能够在运行时使用存储在UI文件中的信息或在插件路径中指定的信息动态创建用户界面。更多…概要¶
方法¶
def
__init__()
def
addPluginPath()
def
errorString()
def
load()
def
pluginPaths()
虚拟方法¶
def
createAction()
def
createLayout()
def
createWidget()
注意
本文档可能包含从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
使用给定的
parent
创建一个表单加载器。- addPluginPath(path)¶
- Parameters:
路径 – 字符串
将给定的
path
添加到加载器在定位插件时将搜索的路径列表中。- availableLayouts()¶
- Return type:
字符串列表
返回一个列表,列出所有可以使用
createLayout()
函数构建的可用布局的名称另请参阅
- availableWidgets()¶
- Return type:
字符串列表
返回一个列表,列出所有可以使用
createWidget()
函数构建的可用小部件,即在给定插件路径中指定的所有小部件。- clearPluginPaths()¶
清除加载器在定位插件时将搜索的路径列表。
- createAction([parent=None[, name=""]])¶
使用给定的
parent
和name
创建一个新的动作。该函数也被
QUiLoader
类在创建小部件时内部使用。因此,你可以子类化QUiLoader
并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader
的版本。使用给定的
parent
和name
创建一个新的操作组。该函数也被
QUiLoader
类在创建小部件时内部使用。因此,你可以子类化QUiLoader
并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader
的版本。- createLayout(className[, parent=None[, name=""]])¶
使用由
className
指定的类,创建一个具有给定parent
和name
的新布局。该函数也被
QUiLoader
类在创建小部件时内部使用。因此,你可以子类化QUiLoader
并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,请确保首先调用QUiLoader
的版本。另请参阅
- createWidget(className[, parent=None[, name=""]])¶
使用由
className
指定的类,创建一个具有给定parent
和name
的新小部件。您可以使用此函数创建由availableWidgets()
函数返回的任何小部件。该函数也被
QUiLoader
类在创建小部件时内部使用。因此,你可以子类化QUiLoader
并重新实现此函数,以干预构建用户界面或小部件的过程。然而,在你的实现中,确保首先调用QUiLoader
的版本。另请参阅
- errorString()¶
- Return type:
字符串
返回
load()
中发生的最后一个错误的人类可读描述。另请参阅
- isLanguageChangeEnabled()¶
- Return type:
布尔
如果启用了语言更改时的动态重翻译,则返回 true;否则返回 false。
- isTranslationEnabled()¶
- Return type:
布尔
- load(arg__1[, parentWidget=None])¶
- load(device[, parentWidget=None])
从给定的
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!)
让我们看一个明显的例子。如果你想创建一个新的小部件,你可能会最终重写
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)¶
- Parameters:
enabled – 布尔值
如果
enabled
为 true,由此加载器加载的用户界面在接收到语言更改事件时将自动重新翻译。否则,用户界面将不会重新翻译。- setTranslationEnabled(enabled)¶
- Parameters:
enabled – 布尔值
将加载器的工作目录设置为
dir
。加载器将在此目录的相对路径中查找其他资源,如图标和资源文件。另请参阅
返回加载器的工作目录。