QmlImageProvider

關(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容