關(guān)于 QQuickImageProvider 官方的描述
The QQuickImageProvider class provides an interface for supporting pixmaps and threaded image requests in QML.
有時(shí)候希望將QPixmap或者QImage中的圖像顯示到Qml中, 這時(shí)候就需要用到QQuickImageProvider了
繼承QQuickImageProvider 新建一個(gè)類:
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文件之前先設(shè)置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/后面的字符串會(huì)被讀取到上面requestPixmap中的id中. 這樣我們可以根據(jù)ID來(lái)加載不同的Image. 代碼中是讀取本地一個(gè)Face.png的文件名.

show.jpg
需要完整代碼請(qǐng)?jiān)L問QtQuickExamples