QmlImageProvider

作者: zhengtianzuo | 来源:发表于2018-11-29 20:19 被阅读0次

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

    相关文章

      网友评论

        本文标题:QmlImageProvider

        本文链接:https://www.haomeiwen.com/subject/ztkqcqtx.html