QQuickView Class

QQuickView 类提供了一个用于显示Qt Quick 用户界面的窗口。更多

Header: #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 }

属性

公共功能

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 还管理视图和根对象的大小。默认情况下,resizeModeSizeViewToRootObject ,它将加载组件并根据视图大小调整其大小。另外,也可将resizeMode 设置为SizeRootObjectToView ,它将根据根对象的大小调整视图的大小。

另请参阅 向 QMLQQuickWidget公开 C++ 类型的属性。

成员类型文档

enum QQuickView::ResizeMode

此枚举指定了调整视图大小的方式。

常数说明
QQuickView::SizeViewToRootObject0视图与 QML 中的根项目一起调整大小。
QQuickView::SizeRootObjectToView1视图会根据视图的大小自动调整根项目的大小。

enum QQuickView::Status

指定QQuickView 的加载状态。

常量说明
QQuickView::Null0QQuickView 未设置源代码。
QQuickView::Ready1QQuickView 已加载并创建 QML 组件。
QQuickView::Loading2QQuickView 正在加载网络数据。
QQuickView::Error3出现一个或多个错误。调用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 与当前值相比没有变化。

访问功能:

QUrl source() const
void setSource(const QUrl &url)

[read-only] status : const Status

组件的当前status

访问功能:

QQuickView::Status status() const

Notifier 信号:

void statusChanged(QQuickView::Status status)

成员函数文档

[explicit] QQuickView::QQuickView(QWindow *parent = nullptr)

用给定的parent 构建一个 QQuickView。parent 的默认值为 0。

QQuickView::QQuickView(QQmlEngine *engine, QWindow *parent)

用给定的 QMLengineparent 构建一个 QQuickView。

注:在这种情况下,QQuickView 并不拥有给定的engine 对象;销毁引擎是调用者的责任。如果engine 在视图之前被删除,status() 将返回QQuickView::Error

另请参阅 Status,status() 和errors() 。

[explicit] QQuickView::QQuickView(const QUrl &source, QWindow *parent = nullptr)

使用给定的 QMLsourceparent 构建一个 QQuickView。parent 的默认值是nullptr

[explicit, since 6.7] QQuickView::QQuickView(QAnyStringView uri, QAnyStringView typeName, QWindow *parent = nullptr)

uritypeName 指定的元素以及父级parent 构建一个 QQuickView。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)

加载由uritypeName 标识的 QML 组件。如果组件由 QML 文件支持,source 将相应设置。对于C++ 中定义的类型,source 将为空。

如果在调用此方法之前设置了source ,则会被清除。

使用相同的uritypeName 多次调用此方法将导致 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's 是向 QML 组件传递数据的关键。在 QML 中,上下文按层次排列,这种层次结构由QQmlEngine 管理。

QQuickItem *QQuickView::rootObject() const

返回视图的根item

[slot] void QQuickView::setInitialProperties(const QVariantMap &initialProperties)

设置 QML 组件在调用QQuickView::setSource() 后初始化的初始属性initialProperties

    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。

注: 属性源的获取函数。

另请参阅 setSource().

[signal] void QQuickView::statusChanged(QQuickView::Status status)

该信号在组件当前status 发生变化时发出。

注: 属性status 的通知信号。

© 2025 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.