Russian Qt Forum

Qt => Qt Quick => Тема начата: Vilgeforc от Март 16, 2015, 01:01



Название: QQuickImageProvider
Отправлено: Vilgeforc от Март 16, 2015, 01:01
Приветствую!
Написал провайдер изображений, зарегистрировал его, однако при попытке использовать получаю такую ошибку:"QML Image: Invalid image provider: image://provider/green". Никак не могу понять что не так.
В QML  использую так:
Код:
source: "image://provider/green";
Регистрировать пробовал так и так:
Код:
view.engine()->addImageProvider(QLatin1String("provider"), temp->getImageProvider());
view.rootContext()->engine()->addImageProvider(QLatin1String("provider"), temp->getImageProvider());
Метод получения Pixmap выглядит так:
Код:
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize){
        int width = 100;
        int height = 50;

        if (size)
            *size = QSize(width, height);
        QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width,
                       requestedSize.height() > 0 ? requestedSize.height() : height);
        pixmap.fill(QColor(id).rgba());

        return pixmap;
    }


Название: Re: QQuickImageProvider
Отправлено: Vilgeforc от Март 19, 2015, 14:08
Код:
QQuickView view;
EngineImageProvider *provider = new EngineImageProvider();
view.engine()->addImageProvider(QLatin1String("provider"), provider);
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));

Так всё заработало. Ошибку выдавало из-за того, что провайдер устанавливался после источника, и естественно на момент инициализации его ещё не было.