QdeClarativeImageProvider не загружает изображение в контейнере

StackOverflow https://stackoverflow.com/questions/5814021

  •  25-10-2019
  •  | 
  •  

Вопрос

Image {
        id: backImage
        source: "image://imageprovider/frontimage"
    }

работает нормально, но не работает с столбцом или другим контейнером

Column {

    Image {
            id: backImage
            source: "image://imageprovider/frontimage"
        }
}

тогда как

Column {

    Image {
            id: backImage
            source: "screen1.png"
        }
}

ХОРОШО. Почему?

Декларация:

class QMLImageProvider : public QObject, public QDeclarativeImageProvider
{
    Q_OBJECT
private:
    QPixmap front;
    QPixmap back;

public:
    explicit QMLImageProvider();
    QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize);
};

реализация:

QMLImageProvider::QMLImageProvider() : QObject(0),
        QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap) {}

QPixmap QMLImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) {
    return QPixmap(QString("QML/screen1.png"));
}

Регистрация:

screenArea = new QDeclarativeView(wgScreenArea);
    qmlImageProvider = new QMLImageProvider();
    screenArea->engine()->addImageProvider(GlobalVars::imageProviderID, qmlImageProvider);

    screenArea->setSource(QUrl::fromLocalFile("QML/screen.qml"));
    screenArea->setResizeMode(QDeclarativeView::SizeRootObjectToView);

PS извините за мой английский.

~ Решен ~

Column {
    id:screenImage
    Image {
        id: backImage
        width: screenImage.width
        height: screenImage.height
        source: "image://imageprovider/backimage"
    }
}

Оно работает! Большое спасибо!

Это было полезно?

Решение

Возможно, что Image с использованием ImageProvider Разве не объявляет о своей ширине и высоте правильно? ColumnСтепеньте немного смешной с предметами, которые не объявляют их ширину и высоту. Попробуйте усердно кодировать width а также height в твоей Image во втором примере, и это должно работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top