QQuickView Class
QQuickView 类提供了一个用于显示Qt Quick 用户界面的窗口。更多内容...
| 头文件: | #include <QQuickView> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
| qmake: | QT += quick |
| 继承自: | QQuickWindow |
公共类型
| enum | ResizeMode { SizeViewToRootObject, SizeRootObjectToView } |
| enum | Status { Null, Ready, Loading, Error } |
属性
- resizeMode : ResizeMode
- source : QUrl
- status : Status
公共函数
| QQuickView(QWindow *parent = nullptr) | |
| QQuickView(QQmlEngine *engine, QWindow *parent) | |
| QQuickView(const QUrl &source, QWindow *parent = nullptr) | |
(since 6.7) | QQuickView(QAnyStringView uri, QAnyStringView typeName, QWindow *parent = nullptr) |
| virtual | ~QQuickView() override |
| QQmlEngine * | engine() const |
| QList<QQmlError> | errors() const |
| QSize | initialSize() const |
| QQuickView::ResizeMode | resizeMode() const |
| QQmlContext * | rootContext() const |
| QQuickItem * | rootObject() const |
| void | setResizeMode(QQuickView::ResizeMode) |
| QUrl | source() const |
| QQuickView::Status | status() const |
公共插槽
(since 6.7) void | loadFromModule(QAnyStringView uri, QAnyStringView typeName) |
| void | setInitialProperties(const QVariantMap &initialProperties) |
| void | setSource(const QUrl &url) |
信号
| void | statusChanged(QQuickView::Status status) |
重新实现的受保护函数
| virtual void | keyPressEvent(QKeyEvent *e) override |
| virtual void | keyReleaseEvent(QKeyEvent *e) override |
| virtual void | mouseMoveEvent(QMouseEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *e) override |
| virtual void | mouseReleaseEvent(QMouseEvent *e) override |
详细说明
这是一个基于QQuickWindow 的便捷子类,当提供主源文件的URL时,它会自动加载并显示一个QML场景。此外,您还可以使用QQmlComponent 实例化自己的对象,并将它们放置在手动设置的QQuickWindow 中。
典型用法:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickView *view = new QQuickView;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();
return app.exec();
}若要接收与使用 QQuickView 加载和执行 QML 相关的错误,您可以连接到statusChanged() 信号并监听QQuickView::Error 。可通过QQuickView::errors() 获取这些错误。
QQuickView 还负责管理视图和根对象的大小调整。默认情况下,resizeMode 设置为SizeViewToRootObject ,这将加载组件并将其调整为与视图相同的大小。此外,resizeMode 也可设置为SizeRootObjectToView ,此时将视图调整为与根对象相同的大小。
另请参阅 《将 C++ 类型的属性暴露给 QML》和《QQuickWidget 》。
成员类型文档
enum QQuickView::ResizeMode
此枚举指定了如何调整视图的大小。
| 常量 | 值 | 描述 |
|---|---|---|
QQuickView::SizeViewToRootObject | 0 | 视图将随 QML 中的根项一起调整大小。 |
QQuickView::SizeRootObjectToView | 1 | 视图将自动将根项调整为与视图大小一致。 |
enum QQuickView::Status
指定QQuickView 的加载状态。
| 常量 | 值 | 描述 |
|---|---|---|
QQuickView::Null | 0 | 此QQuickView 未设置源。 |
QQuickView::Ready | 1 | 该QQuickView 已加载并创建了QML组件。 |
QQuickView::Loading | 2 | 此QQuickView 正在加载网络数据。 |
QQuickView::Error | 3 | 发生了一个或多个错误。调用errors() 以获取错误列表。 |
属性文档
resizeMode : ResizeMode
该属性控制视图是否应调整窗口内容的大小
如果将此属性设置为SizeViewToRootObject (默认值),则视图会调整大小以适应 QML 中根项的大小。
如果将此属性设置为SizeRootObjectToView ,视图将自动将根项调整为与视图大小一致。
访问函数:
| QQuickView::ResizeMode | resizeMode() const |
| void | setResizeMode(QQuickView::ResizeMode) |
另请参阅 ` initialSize()`。
source : QUrl
该属性存储了 QML 组件源文件的 URL。
请确保提供的 URL 完整且正确,特别是从本地文件系统加载文件时,请使用QUrl::fromLocalFile()。
请注意,设置源 URL 会导致 QML 组件被实例化,即使该 URL 与当前值完全相同也是如此。
访问函数:
[read-only] status : Status
该组件的当前status 。
访问函数:
| QQuickView::Status | status() const |
通知器信号:
| void | statusChanged(QQuickView::Status status) |
成员函数文档
[explicit] QQuickView::QQuickView(QWindow *parent = nullptr)
根据给定的parent 创建一个QQuickView。parent 的默认值为0。
QQuickView::QQuickView(QQmlEngine *engine, QWindow *parent)
根据给定的 QMLengine 和parent 创建一个 QQuickView。
注意:在此情况下,QQuickView 不拥有给定的engine 对象;销毁引擎是调用方的责任。如果engine 在视图之前被删除,status() 将返回QQuickView::Error 。
另请参阅 Status 、status() 和errors()。
[explicit] QQuickView::QQuickView(const QUrl &source, QWindow *parent = nullptr)
根据给定的 QMLsource 和parent 构建一个 QQuickView。parent 的默认值为nullptr 。
[explicit, since 6.7] QQuickView::QQuickView(QAnyStringView uri, QAnyStringView typeName, QWindow *parent = nullptr)
创建一个 QQuickView,其元素由uri 和typeName 指定,父对象为parent 。parent 的默认值为nullptr 。
该函数在 Qt 6.7 中引入。
另请参阅 loadFromModule 。
[override virtual noexcept] QQuickView::~QQuickView()
销毁QQuickView 。
QQmlEngine *QQuickView::engine() const
返回一个指向用于实例化 QML 组件的QQmlEngine 的指针。
QList<QQmlError> QQuickView::errors() const
返回上次编译或创建操作期间发生的错误列表。当状态不是“Error”时,返回一个空列表。
QSize QQuickView::initialSize() const
返回根对象的初始大小。
如果 `resizeMode ` 的值为 `QQuickItem::SizeRootObjectToView`,则根对象将被调整为视图的大小。`initialSize` 包含根对象在调整大小之前的尺寸。
[override virtual protected] void QQuickView::keyPressEvent(QKeyEvent *e)
重写了:QQuickWindow::keyPressEvent(QKeyEvent *e)。
[override virtual protected] void QQuickView::keyReleaseEvent(QKeyEvent *e)
重写了:QQuickWindow::keyReleaseEvent(QKeyEvent *e)。
[slot, since 6.7] void QQuickView::loadFromModule(QAnyStringView uri, QAnyStringView typeName)
加载由uri 和typeName 标识的 QML 组件。如果该组件由一个 QML 文件支持,则source 将相应地被设置。对于在C++ 中定义的类型,source 将为空。
如果在调用此方法之前已设置了任何source ,该值将被清空。
若使用相同的uri 和typeName 多次调用此方法,将导致 QML 组件被重新实例化。
此函数在 Qt 6.7 中引入。
另请参阅 setSource 、QQmlComponent::loadFromModule 和QQmlApplicationEngine::loadFromModule 。
[override virtual protected] void QQuickView::mouseMoveEvent(QMouseEvent *e)
重写了:QQuickWindow::mouseMoveEvent(QMouseEvent *event)。
[override virtual protected] void QQuickView::mousePressEvent(QMouseEvent *e)
重写了:QQuickWindow::mousePressEvent(QMouseEvent *event)。
[override virtual protected] void QQuickView::mouseReleaseEvent(QMouseEvent *e)
重写了:QQuickWindow::mouseReleaseEvent(QMouseEvent *event)。
QQmlContext *QQuickView::rootContext() const
该函数返回上下文层次结构的根节点。每个 QML 组件都在一个QQmlContext 中实例化。QQmlContext 对于向 QML 组件传递数据至关重要。在 QML 中,上下文按层次结构排列,该层次结构由QQmlEngine 管理。
QQuickItem *QQuickView::rootObject() const
返回视图的根item 。
[slot] void QQuickView::setInitialProperties(const QVariantMap &initialProperties)
设置初始属性initialProperties ,QML组件在调用QQuickView::setSource()后将以此进行初始化。
QScopedPointer<QQuickView> view { new QQuickView };
view->setInitialProperties({"x, 100"}, {"width", 50});
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();注意:您 只能使用此函数来初始化顶级属性。
注意:此 函数应始终在调用 `setSource` 之前调用,因为一旦组件进入 `Ready` 状态,该函数将不再起作用。
另请参阅 QQmlComponent::createWithInitialProperties()。
[slot] void QQuickView::setSource(const QUrl &url)
将源设置为url ,加载 QML 组件并实例化它。
请确保提供的 URL 完整且正确,特别是在从本地文件系统加载文件时,请使用QUrl::fromLocalFile()。
如果使用相同的 URL 多次调用此方法,将导致 QML 组件被重新实例化。
注意: 这是属性source 的设置器 函数。
另请参阅 source()。
QUrl QQuickView::source() const
返回源 URL(如果已设置)。
注意: 这是 source 属性的获取器 函数。
另请参阅 setSource()。
[signal] void QQuickView::statusChanged(QQuickView::Status status)
当组件的当前status 发生变化时,会发出此信号。
注意: 这是属性status的通知 信号。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.