QQuickView类

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

头文件 #include <QQuickView>
CMakefind_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmakeQT += quick
继承自 QQuickWindow

公开类型

枚举ResizeMode { SizeViewToRootObject, SizeRootObjectToView }
枚举Status { Null, Ready, Loading, Error }

属性

公开函数

QQuickView(QWindow *parent = nullptr)
QQuickView(QQmlEngine *engine, QWindow *parent)
QQuickView(const QUrl &source, QWindow *parent = nullptr)
(自6.7起) QQuickView(QAnyStringView uri, QAnyStringView typeName, QWindow *parent = nullptr)
virtual~QQuickView() override
QQmlEngine *engine() const
QList<QQmlError>errors() const
QSizeinitialSize() const
QQuickView::ResizeModeresizeMode() const
QQmlContext *rootContext() const
QQuickItem *rootObject() const
voidsetResizeMode(QQuickView::ResizeMode)
QUrlsource() const
QQuickView::Statusstatus() const

公开槽函数

(自6.7起) voidloadFromModule(QAnyStringView uri, QAnyStringView typeName)
voidsetInitialProperties(const QVariantMap &initialProperties)
voidsetSource(const QUrl &url)

信号

voidstatusChanged(QQuickView::Status status)

重新实现受保护的函数

virtual voidkeyPressEvent(QKeyEvent *e) override
virtual voidkeyReleaseEvent(QKeyEvent *e) override
virtual voidmouseMoveEvent(QMouseEvent *e) override
virtual voidmousePressEvent(QMouseEvent *e) override
virtual voidmouseReleaseEvent(QMouseEvent *e) override

详细说明

这是一个便利的 subclass،它将自动加载并在被给定主源文件的 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,它将加载组件并将其调整到视图的尺寸。或者,可以设置 resizeModeSizeRootObjectToView,这将调整视图的尺寸以匹配根对象的尺寸。

另请参阅 将 C++ 类型的属性导出到 QMLQQuickWidget

成员类型文档

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::ResizeModeresizeMode() const
voidsetResizeMode(QQuickView::ResizeMode)

另请参阅 initialSize

source : QUrl

此属性存储 QML 组件的源 URL。

请确保提供的 URL 是完整和正确的,尤其是当从本地文件系统加载文件时,请使用 QUrl::fromLocalFile()。

请注意,设置源URL会导致创建QML组件,即使URL的值与当前值未更改。

访问函数

QUrlsource() const
voidsetSource(const QUrl &url)

[只读] 状态 : const 状态

组件的当前状态

访问函数

QQuickView::Status状态() const

通知器信号

void状态改变(QQuickView::Status 状态)

成员函数文档

[显式] QQuickView::QQuickView(QWindow * = nullptr)

使用给定的构建QQuickView。默认父值是0。

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

使用给定的QMLengine构建QQuickView。

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

另请参阅状态状态()和错误

[显式,自6.7以来] QQuickView::QQuickView(QUrl &source, QWindow * = nullptr)

使用给定的QMLsource构建QQuickView。默认父值是nullptr

[显式,自6.7以来] QQuickView::QQuickView(QAnyStringView uri, QAnyStringView typeName, QWindow * = nullptr)

使用由uritypeName指定的元素和父构建QQuickView。默认父值是nullptr

此函数是在Qt 6.7中引入的。

另请参阅从模块加载

[重写虚拟 noexcept] QQuickView::~QQuickView()

销毁QQuickView。

QQmlEngine *QQuickView::engine() const

返回用于实例化QML组件的QQmlEngine指针。

QList<QQmlError> QQuickView::errors() const

返回上次编译或创建操作期间发生的错误的列表。当状态不是Error时,返回空列表。

QSize QQuickView::initialSize() const

返回根对象的最小大小。

如果 resizeMode 设置为 QQuickItem::SizeRootObjectToView,则根对象将根据视图大小进行调整。initialSize 包含调整大小前的根对象大小。

[覆盖虚保护] void QQuickView::keyPressEvent(QKeyEvent *e)

重新实现: QQuickWindow::keyPressEvent(QKeyEvent *e).

[覆盖虚保护] void QQuickView::keyReleaseEvent(QKeyEvent *e)

重新实现: QQuickWindow::keyReleaseEvent(QKeyEvent *e).

[槽,自 6.7 版本起] void QQuickView::loadFromModule(QAnyStringView uri, QAnyStringView typeName)

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

如果在此方法调用之前设置过任何 source,它将清除。

使用相同的 uritypeName 调用此方法多次将导致 QML 组件被重新实例化。

此函数是在Qt 6.7中引入的。

另请参阅:setSourceQQmlComponent::loadFromModuleQQmlApplicationEngine::loadFromModule

[覆盖虚保护] void QQuickView::mouseMoveEvent(QMouseEvent *e)

重新实现: QQuickWindow::mouseMoveEvent(QMouseEvent *event).

[覆盖虚保护] void QQuickView::mousePressEvent(QMouseEvent *e)

重新实现: QQuickWindow::mousePressEvent(QMouseEvent *event).

[覆盖虚保护] void QQuickView::mouseReleaseEvent(QMouseEvent *e)

重新实现: QQuickWindow::mouseReleaseEvent(QMouseEvent *event).

QQmlContext *QQuickView::rootContext() const

此函数返回上下文层次结构的根。每个 QML 组件都在一个 QQmlContext 中实例化。上下文是用于传递数据到 QML 组件的关键。在 QML 中,上下文按层级排列,该层级由 QQmlEngine 管理。

QQuickItem *QQuickView::rootObject() const

返回视图的根 项目

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

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

    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 的通知信号。

© 2024 Qt公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据由自由软件基金会发布的 GNU自由文档许可协议第1.3版 的条款发布的。Qt及其相关标志是芬兰的Qt公司和/或全球其他地区的商标。所有其他商标均为其各自所有者的财产。