关于 QQuickImageProvider 官方的描述
The QQuickImageProvider class provides an interface for supporting pixmaps and threaded image requests in
QML.
有时候希望将
QPixmap或者
QImage中的
图像显示到Qml中, 这时候就需要用到QQuickImageProvider了
继承QQuickImageProvider 新建一个类:
```
class ImageProvider : public QQuickImageProvider
{
public:
ImageProvider::ImageProvider(ImageType type, Flags flags = Flags()) :
QQuickImageProvider(type, flags)
{
}
~ImageProvider(){}
QPixmap requestPixmap(const
QString &id, QSize *size, const QSize &requestedSize)
{
QString strFileName = QCoreApplication::applicationDirPath() + "/" + id;
qDebug() << strFileName;
QPixmap pixmap(strFileName);
return pixmap;
}
};
```
使用:
加载qml文件之前先设置addImageProvider
```
QQmlApplicationEngine engine;
engine.addImageProvider(QLatin1String("imageProvider"), new ImageProvider(QQmlImageProviderBase::Pixmap));
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
```
在qml文件中使用
```
Image {
anchors.centerIn: parent
source: "image://imageProvider/Face.png"
}
```
其中image://imageProvider/后面的字符串会被读取到上面requestPixmap中的id中. 这样我们可以根据ID来加载不同的Image. 代码中是读取本地一个Face.png的
文件名.
需要完整代码请访问
QtQuickExamples