QQuickView类
QQuickView类提供了一个显示Qt Quick用户界面的窗口。 更多...
头文件 | #include <QQuickView> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake | QT += quick |
继承自 | QQuickWindow |
公开类型
枚举 | ResizeMode { SizeViewToRootObject, SizeRootObjectToView } |
枚举 | Status { Null, Ready, Loading, Error } |
属性
- resizeMode : ResizeMode
- source : QUrl
- status : const Status
公开函数
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 |
QSize | initialSize() const |
QQuickView::ResizeMode | resizeMode() const |
QQmlContext * | rootContext() const |
QQuickItem * | rootObject() const |
void | setResizeMode(QQuickView::ResizeMode) |
QUrl | source() const |
QQuickView::Status | status() const |
公开槽函数
(自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 |
详细说明
这是一个便利的 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,它将加载组件并将其调整到视图的尺寸。或者,可以设置 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的值与当前值未更改。
访问函数
[只读]
状态 : 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)
使用由uri和typeName指定的元素和父父构建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)
根据 uri 和 typeName 加载识别的 QML 组件。如果组件由 QML 文件支持,source 将相应设置。对于定义为 C++
的类型,source
将为空。
如果在此方法调用之前设置过任何 source,它将清除。
使用相同的 uri 和 typeName 调用此方法多次将导致 QML 组件被重新实例化。
此函数是在Qt 6.7中引入的。
另请参阅:setSource、QQmlComponent::loadFromModule 和 QQmlApplicationEngine::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公司和/或全球其他地区的商标。所有其他商标均为其各自所有者的财产。