关于 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的文件名.
show.jpg需要完整代码请访问QtQuickExamples
网友评论