QML 屏幕加载优化

问题描述 投票:0回答:1

我在较旧的 GPU 上运行 QML 应用程序时遇到问题。 因此,我需要优化 QML 屏幕的结构,这些屏幕预计将通过 StackView 动态加载。然而,有些屏幕加载时间超过 350ms,这在视觉上是不可接受的。

最初,我想通过在一些 QML 组件上使用

Loader
并在必要时加载/显示它们来优化屏幕。

问题是,在屏幕内,有管理业务逻辑的 C++ 后端,在 QML 中声明,它们与我想要放入加载器的项目有许多绑定。

因此,我必须保留项目原样,并根据需要显示/隐藏它们。因此,所有内容都必须在屏幕加载时加载,这会增加加载时间。 我想知道如何有效地优化我继承的这个系统。

这是一个代码片段:

Item {
    BackendCpp {
        workingProp1: cppContext.prop1
        workingProp2: item1.prop
        workingProp3: item2.prop
    }

    BigQmlItem {
        id: item1
        visible: cppContext.condition === true
    }

    AnotherBigQmlItem {
        id: item2
        visible: cppContext.condition === false
    }
}
qt optimization qml loader
1个回答
0
投票

拥有 C++ 后端、管理业务逻辑和拥有多个绑定没有任何问题。

查看延迟加载策略。在 QML 中,使用

Qt.callLater()
Timer
推迟初始化或将大型初始化逻辑分解为较小的部分。在 C++ 中,查看
QTimer:singleShot
QThread
来延迟主线程中的执行或将活动移出主线程。

信号/槽是您的朋友,可帮助将数据从另一个线程编组回 UI 线程。

查看 C++ 和 QML 中的

models
。确定模型是否可以从空开始并逐渐填充。如果您的数据绑定良好,它应该尊重您缓慢填充的模型并抵抗初始化顺序。

© www.soinside.com 2019 - 2024. All rights reserved.