QtQuick/Qml系列教程

QmlImageProvider

2018-11-29  本文已影响0人  zhengtianzuo

关于 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

上一篇下一篇

猜你喜欢

热点阅读