Hi,
In my QML app I want to use QQuickImageProvider to turn an image into QPixmap. I created the ResourceImageProvider class like this:
resourceimageprovider.h:
#ifndef RESOURCEIMAGEPROVIDER_H
#define RESOURCEIMAGEPROVIDER_H
#include <QQuickImageProvider>
#include <QImage>
#include <QPixmap>
#include <QObject>
class ResourceImageProvider : public QQuickImageProvider, public QObject
{
Q_OBJECT
public:
ResourceImageProvider();
// ~ ResourceImageProvider();
QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize);
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize);
};
#endif // RESOURCEIMAGEPROVIDER_H
resourceimageprovider.cpp:
#include "resourceimageprovider.h"
ResourceImageProvider::ResourceImageProvider() : QQuickImageProvider (QQuickImageProvider(Image))
{
}
QImage ResourceImageProvider::requestImage (const QString &id, QSize *size, const QSize &requestedSize)
{
QString rsrcid = ":/" + id;
QImage image(rsrcid);
QImage result;
if(requestedSize.isValid ()) {
result = image.scaled (requestedSize,Qt::KeepAspectRatio);
} else {
result = image;
}
*size = result.size();
return result;
}
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
{
QString rsrcid = ":/" + id;
QPixmap image(rsrcid);
QPixmap result;
if(requestedSize.isValid ()) {
result = image.scaled (requestedSize,Qt::KeepAspectRatio);
} else {
result = image;
}
*size = result.size();
return result;
}
main.cpp:
#include <QApplication>
#include <VPApplication>
#include <QQmlApplicationEngine>
#include <QQuickImageProvider>
#include "resourceimageprovider.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
VPApplication vplay;
// Use platform-specific fonts instead of Felgo's default font
vplay.setPreservePlatformFonts(true);
QQmlApplicationEngine engine;
vplay.initialize(&engine);
// use this during development
// for PUBLISHING, use the entry point below
vplay.setMainQmlFileName(QStringLiteral("qml/Main.qml"));
ResourceImageProvider *imageProvider = new ResourceImageProvider();
imageProvider->requestPixmap("kép",140,100);
engine.rootContext ()->setContextProperty("ImageProvider",imageProvider);
// vplay.setMainQmlFileName(QStringLiteral("qrc:/qml/Main.qml"));
engine.load(QUrl(vplay.mainQmlFileName()));
return app.exec();
}
How can I fix the
imageProvider->requestPixmap("kép",140,100);
line so I would be able to ssign values from the QML code?
(I am trying to follow the Integrate C++ and QML example).
Thank you for your help.