如何在运行时生成的 QML 中加载图像(jpg)

Posted

技术标签:

【中文标题】如何在运行时生成的 QML 中加载图像(jpg)【英文标题】:How to load images (jpg) in QML generated at runtime 【发布时间】:2016-09-22 15:30:03 【问题描述】:

我的问题很简单。 我有一个使用 QML 开发的带有 Gui 的 Qt 应用程序。 我的后端生成 jpg 图像并将其保存在名为 /images 的文件夹中。 我能够从 C++ 向 QML 发送包含我想要显示的图像名称的字符串。遗憾的是,我的 QML Image 对象没有显示任何内容。

似乎只有在之前已在 qml.qrc 文件中声明的情况下才能显示图像。 遗憾的是,qrc 文件还不支持通配符! https://bugreports.qt.io/browse/QTBUG-1400

有解决办法吗? 图像的名称不固定,它们是使用某些运行时值(即时间戳)生成的。

谢谢

【问题讨论】:

或许你需要QQuickImageProvider 不,他只需要从磁盘而不是 rqc 加载 我可能需要 QQuickImageProvider,但这很麻烦,因为在我的后端我为每个暴露给 QML 的模型处理多个图像(在运行时生成)。在任何情况下,使用 QQuickImageProvider 应该更快......而不是存储和加载图像。明天我会试一试。谢谢 如果您决定采用图像提供者的方式:***.com/questions/27429371/… 好的,谢谢!我会尝试.. 或者我会转到 QWidgets >( 【参考方案1】:

默认会在 qrc 文件中搜索图片源。要使其转到实际的文件系统,请在路径前添加 file:///

【讨论】:

是的,它与cache:false 完美结合。在切换到其他东西之前,我会尝试这个实现的性能。谢谢 由于文件名来自 C++,只需使用 QUrl::fromLocalFile() 并将生成的 URL 交给 QML

以上是关于如何在运行时生成的 QML 中加载图像(jpg)的主要内容,如果未能解决你的问题,请参考以下文章

QML:在 GridView 中加载图像

Qml 在运行时可以工作,但不会在 Qt 设计器中加载照片

使用 QQuickImageProvider 在 QML WebEngineView 中加载图像

在 jqGrid 列中加载图像

如何在后台工作人员运行时在 uwp 中加载图像

QPixmap 在 Qt 中加载许多图像