PySide6.QtQml.QQmlApplicationEngine¶
- class QQmlApplicationEngine¶
QQmlApplicationEngine
提供了一种从单个 QML 文件加载应用程序的便捷方式。更多…概要¶
方法¶
def
__init__()
def
rootObjects()
插槽¶
def
load()
def
loadData()
def
loadFromModule()
信号¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
该类结合了
QQmlEngine
和QQmlComponent
,提供了一种便捷的方式来加载单个QML文件。它还向QML暴露了一些核心应用程序功能,这些功能通常由C++/QML混合应用程序从C++控制。它可以这样使用:
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine("main.qml"); return app.exec(); }
与QQuickView不同,
QQmlApplicationEngine
不会自动创建根窗口。如果您使用的是Qt Quick中的可视项,您需要将它们放置在Window中。你也可以将QCoreApplication与
QQmlApplicationEngine
一起使用,如果你没有使用任何需要QGuiApplication的QML模块(例如QtQuick
)。从默认的
QQmlEngine
的配置更改列表:连接Qt。
quit()
到 QCoreApplication::quit()自动从与主QML文件相邻的i18n目录加载翻译文件。
翻译文件必须具有“qml_”前缀,例如 qml_ja_JP.qm。
当
QJSEngine::uiLanguage
/Qt.uiLanguage
属性更改时,翻译会重新加载。如果场景包含QQuickWindow,则自动设置孵化控制器。
自动设置一个
QQmlFileSelector
作为URL拦截器,将文件选择器应用于所有QML文件和资源。
引擎行为可以通过使用从
QQmlEngine
继承的方法进一步调整。使用给定的
parent
创建一个新的QQmlApplicationEngine
。稍后您需要调用load()
来加载一个QML文件。- __init__(filePath[, parent=None])
- Parameters:
filePath – str
parent –
QObject
创建一个新的
QQmlApplicationEngine
并加载给定filePath
处的QML文件,该路径必须是本地文件或qrc路径。如果给出的是相对路径,则它将被解释为相对于应用程序的工作目录。这是为了方便提供的,与使用空构造函数并在之后调用load相同。
创建一个新的
QQmlApplicationEngine
并加载给定url
处的QML文件。这是为了方便提供的,与使用空构造函数并在之后调用load相同。- __init__(uri, typeName[, parent=None])
- Parameters:
uri – 字符串
typeName – str
parent –
QObject
创建一个新的
QQmlApplicationEngine
并加载由uri
和typeName
指定的QML类型。这是为了方便提供的,与使用空构造函数并随后调用loadFromModule
相同。- load(filePath)¶
- Parameters:
filePath – str
加载位于
filePath
的根 QML 文件。filePath
必须是本地文件的路径或资源文件系统中的文件路径。如果filePath
是相对路径,则相对于应用程序的工作目录。文件中定义的对象树会立即实例化。如果发生错误,错误信息将通过qWarning打印。
- load(url)
- Parameters:
url –
QUrl
加载位于
url
的根 QML 文件。对于本地文件 URL,文件定义的对象树会立即创建。远程 URL 是异步加载的,监听objectCreated
信号以确定对象树何时准备就绪。如果发生错误,
objectCreated
信号会以空指针作为参数发出,并使用 qWarning 打印错误消息。- loadData(data[, url=QUrl()])¶
- Parameters:
data –
QByteArray
url –
QUrl
加载在
data
中给定的 QML。由data
定义的对象树会立即实例化。如果指定了
url
,它将用作组件的基本URL。这会影响数据和错误消息中的相对路径。如果发生错误,错误信息将通过 qWarning 打印。
- loadFromModule(uri, typeName)¶
- Parameters:
uri – 字符串
typeName – str
从由
uri
指定的模块加载QML类型typeName
。如果该类型源自位于远程URL的QML文件,则该类型将异步加载。监听objectCreated
信号以确定对象树何时准备就绪。如果发生错误,
objectCreated
信号会以空指针作为参数发出,并使用 qWarning 打印错误消息。QQmlApplicationEngine engine; engine.loadFromModule("QtQuick", "Rectangle");
当对象完成加载时,会发出此信号。如果加载成功,
object
包含指向已加载对象的指针,否则指针为 NULL。组件来源的
url
也提供了object
。注意
如果组件的路径是作为包含相对路径的QString提供的,
url
将包含文件的完全解析路径。当加载因发生错误而完成时,会发出此信号。
加载失败的组件的
url
作为参数提供。QGuiApplication app(argc, argv); QQmlApplicationEngine engine; // exit on error QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed, &app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(QUrl()); return app.exec();
注意
如果组件的路径是作为包含相对路径的QString提供的,
url
将包含文件的完全解析路径。另请参阅
objectCreated
,即使创建失败,也会发出此信号。返回由
QQmlApplicationEngine
实例化的所有根对象的列表。这将仅包含通过load()
或便捷构造函数加载的对象。注意
在Qt 5.9之前的版本中,此函数被标记为非
const
。- setExtraFileSelectors(extraFileSelectors)¶
- Parameters:
extraFileSelectors – 字符串列表
设置要传递给内部
QQmlFileSelector
的extraFileSelectors
,用于将URL解析为本地文件。extraFileSelectors
在加载第一个QML文件时应用。之后设置它们将无效。另请参阅
QQmlFileSelector
setExtraSelectors
- setInitialProperties(initialProperties)¶
- Parameters:
initialProperties – 字典,键类型为 .QString,值类型为 QVariant。
设置
initialProperties
,用于在QML组件加载后初始化。QQmlApplicationEngine engine; EventDatabase eventDatabase; EventMonitor eventMonitor; engine.setInitialProperties({ { "eventDatabase", QVariant::fromValue(&eventDatabase) }, { "eventMonitor", QVariant::fromValue(&eventMonitor) } });