Qt ImageProvider 的使用

QQuickImageProvider 是一个可以支持在QML中使用 qpixmap 和 图片加载线程的类。

  它支持在qml中使用Image加载的高级特性, 包括

    使用 QPixmap 替代实际的image文件。

    在线程中异步加载图片。

使用时, 首先使用QQmlEngine::addImageProvider 方法注册 ImageProvider, 并且指定前缀, 该前缀在qml中使用。如:
   engine->addImageProvider(QLatin1String("colors"), new ColorPixmapProvider);

则在qml中使用图片时,语法如下: 

  Image { source: "image://colors/yellow" }

    其中 image:// 前缀表示 图片来自于 ImageProvider。 colors 表示指定前缀, 大小写无关。  而 yellow 是图片字符串, 在

requestPixmap(Image  texture)方法中, 作为string类型的id传入, 指定相应图片。

  QPixmap QQuickImageProvider::​requestPixmap(const QString & id, QSize * size, const QSize &requestedSize)

的参数意义:

  id 用于在qml中使用字符串指定相应图片。

  size 必须填充为 图片的真实尺寸。

  requestedSize 由qml传入,表示实际加载的图片大小, 用像素数表示, 不超过1024*1024.

  如果 requestedSize 小于size, 图片会缩小; 如果图片是 不能缩放的, 目前仅jpeg类型,则图片甚至无法被加载。 如果只有长或者宽被指定, 则另外一个数值会按比例计算以保持图片实际长宽比。 改变该值导致图片被重新加载, 如果是网络图片, 还会重新下载。   如果把改属性设置为 undefined, 则该值会被设定为图片实际大小。

原文地址:https://www.cnblogs.com/aslistener/p/4478230.html