Hi all,

Stupid mistake on my part: the image provider identifier must be
specified with lower case.


Regards,

-Pris

On Sat, Aug 6, 2011 at 5:14 PM, Pris Matic <[email protected]> wrote:
> Hi all,
>
> I've been having a lot of trouble using QDeclarativeImageProvider in
> my program. I've tried to follow the example given in the
> documentation as close as possible... unfortunately I consistently get
> a "QML Image: Failed to get image from provider:
> image://imageproviderid/someimg" error. It's difficult to debug this
> -- all I know is that my QDeclarativeImageProvider's "requestImage"
> function never gets called when this error is thrown.
>
> I've described how I'm using QDeclarativeImageProvider, and provided
> my inherited class as well. I've been stuck on this problem for awhile
> now and I'd really appreciate any help with this.
>
> -Pris
>
> // ========================================================================== 
> //
> //QDeclarativeImageProvider inherited class
> #include "qmlimgprovider.h"
>
> QmlImgProvider::QmlImgProvider() :
>    QDeclarativeImageProvider(QDeclarativeImageProvider::Image)
> { }
>
> QImage QmlImgProvider::requestImage(const QString &id, QSize *size,
> const QSize &requestedSize)
> {
>    QImage myImage;
>    qDebug() << "HELLO";  // never gets called!
>
>    if (!m_image->isNull())
>    {   // album art
>        if(requestedSize.isValid())  // scale image if size is valid
>        {  myImage = m_image->scaled(requestedSize, Qt::KeepAspectRatio);  }
>
>        else  // leave same scale (want to create copy regardless)
>        {  myImage = m_image->scaled(m_image->size());  }
>    }
>    else
>    {   // default art
>        if(requestedSize.isValid())  // scale image if size is valid
>        {  myImage = m_default_image->scaled(requestedSize,
> Qt::KeepAspectRatio);  }
>
>        else  // leave same scale (want to create copy regardless)
>        {  myImage = m_default_image->scaled(m_default_image->size());  }
>    }
>
>    // set size for qml (if needed)
>    *size = myImage.size();
>    return myImage;
> }
>
> void QmlImgProvider::SetImage(QImage* myImage)
> {  m_image = myImage;  }
>
> void QmlImgProvider::SetDefaultImage(QImage* myDefImage)
> {  m_default_image = myDefImage;  }
>
> // ========================================================================== 
> //
> // setup
> QDeclarativeEngine* qmlEngine = m_view_context->engine();
> qmlEngine->addImageProvider("ImageProviderID", new QmlImgProvider());
> m_view->show();
>
> // some time later
> m_img_provider = qmlEngine->imageProvider("ImageProviderID");
> m_img_provider->SetImage(m_valid_qimage);
>
> // ========================================================================== 
> //
> // QML call (occurs AFTER the images have been set)
> Image
>                    {
>                        height: parent.width;
>                        width: parent.width;
>                        fillMode: Image.PreserveAspectCrop;
>                        source: "image://ImageProviderID/someImage";
>                        anchors.verticalCenter: parent.verticalCenter;
>                        clip:true;
>                    }
>
_______________________________________________
Qt-qml mailing list
[email protected]
http://lists.qt.nokia.com/mailman/listinfo/qt-qml

Reply via email to