Russian Qt Forum
Ноябрь 01, 2024, 11:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QQuickImageProvider  (Прочитано 3125 раз)
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;
    }
Записан
Vilgeforc
Гость
« Ответ #1 : Март 19, 2015, 14:08 »

Код:
QQuickView view;
EngineImageProvider *provider = new EngineImageProvider();
view.engine()->addImageProvider(QLatin1String("provider"), provider);
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));

Так всё заработало. Ошибку выдавало из-за того, что провайдер устанавливался после источника, и естественно на момент инициализации его ещё не было.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 21.