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
