Qt 如何在QML中可视化QImage
我有一个QAbstractListModel,其中包含自定义对象作为项。每个对象都有一个从数据库加载的QImage。我在QML中使用Qt 如何在QML中可视化QImage,qt,qml,qimage,Qt,Qml,Qimage,我有一个QAbstractListModel,其中包含自定义对象作为项。每个对象都有一个从数据库加载的QImage。我在QML中使用ListView来可视化它,但我没有看到在委托中表示QImage的任何含义图像原语似乎只接受URL 我展示QImages的唯一方法是创建一个QQuickImageProvider,每个元素有一个URL的自定义系统(看起来完全是多余的)?我认为QQuickImageProvider是正确的方法 此外,我认为如果您确切了解Qt内部工作原理,可以使用“overkill”一
ListView
来可视化它,但我没有看到在委托中表示QImage
的任何含义<代码>图像原语似乎只接受URL
我展示
QImage
s的唯一方法是创建一个QQuickImageProvider
,每个元素有一个URL的自定义系统(看起来完全是多余的)?我认为QQuickImageProvider是正确的方法
此外,我认为如果您确切了解Qt内部工作原理,可以使用“overkill”一词。否则,这只是猜测
AFAIK下面有一个复杂的图像(和其他数据)缓存系统,因此一旦加载了图像pixmap(并且没有更改),数据检索就会立即进行。因此,不要过度杀戮,因为在任何情况下,在某个时候你都需要加载那些QImage,但只需一次
我相信QQuickImageProvider每次都提供指向缓存数据的指针,而不是整个光栅化数据。此外,现在的闪电操作是通过硬件加速来执行的,因此这是一个只需几分之一毫秒的操作
换句话说,你最终会有:
- 给我带url的图像”image://xyz"
- Qt在缓存中查找并返回数据指针,如果未找到,则执行图像的完全加载
- QML渲染器将数据数组传递给OpenGL
- 只需一次blit操作(微秒),您就可以在屏幕上看到它