- class QUiLoader#
QUiLoader
类允许独立应用程序在运行时动态创建用户界面,使用存储在 UI 文件中的信息或在插件路径中指定的信息。了解更多内容...摘要#
方法#
def
__init__()
def
addPluginPath()
def
errorString()
定义
load()
虚方法#
注意
本文档可能包含从 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
使用给定的
parent
创建一个表单加载器。-
addPluginPath
(path)# - 参数:
path - str
将给定的
path
添加到加载器搜索插件时要查找的路径列表中。- availableLayouts()#
- 返回类型:
字符串列表
返回可以使用
createLayout()
函数构建的所有可用布局的列表另请参阅
- availableWidgets()#
- 返回类型:
字符串列表
返回可以使用
createWidget()
函数构建的所有可用的小部件的列表,即给定插件路径中指定的所有小部件。- clearPluginPaths()#
清除在定位插件时加载器将搜索的路径列表。
创建一个带有指定
parent
和name
的新动作。此函数还由
QUiLoader
类在创建小部件时内部使用。因此,您可以扩展QUiLoader
并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用QUiLoader
的版本。使用指定的
parent
和name
创建一个新的操作组。此函数还由
QUiLoader
类在创建小部件时内部使用。因此,您可以扩展QUiLoader
并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用QUiLoader
的版本。- createLayoutclassName[, parent=None[, name=""]]#
使用由
className
指定的类创建一个新的布局,并使用指定的parent
和name
。此函数还由
QUiLoader
类在创建小部件时内部使用。因此,您可以扩展QUiLoader
并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用QUiLoader
的版本。另请参阅
- createWidgetclassName[, parent=None[, name=""]]#
使用由
className
指定的类创建一个新的小部件,并使用指定的parent
和name
。您可以使用此函数创建由availableWidgets()
函数返回的小部件。此函数还由
QUiLoader
类在创建小部件时内部使用。因此,您可以扩展QUiLoader
并重新实现此函数以干预用户界面或小部件的构建过程。然而,在进行实现时,请确保先调用QUiLoader
的版本。另请参阅
- errorString()#
- 返回类型:
str
返回对
load()
中发生的最后一个错误的人类可读描述。另请参阅
- isLanguageChangeEnabled()#
- 返回类型:
bool
如果启用了语言更改时的动态重翻译,则返回true;否则返回false。
- isTranslationEnabled()#
- 返回类型:
bool
从给定的
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
设置加载器的当前工作目录为
dir
。加载器将在此目录的相对路径中查找其他资源,如图标和资源文件。另请参阅
返回加载器的工作目录。