Frage

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

Funktioniert gut, funktioniert aber nicht mit Spalten oder einem anderen Container

Column {

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

wohingegen

Column {

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

OK. Wieso den?

Erklärung:

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);
};

Implementierung:

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

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

Anmeldung:

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 Entschuldigung für mein Englisch.

~ Gelöst ~

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

Es klappt! Vielen Dank!

War es hilfreich?

Lösung

Möglicherweise das das Image Verwendung der ImageProvider Dekliert seine Breite und Höhe nicht richtig? ColumnS Erhalten Sie ein bisschen lustig mit Gegenständen, die ihre Breite und Größe nicht deklarieren. Versuchen Sie es mit hartem Codieren der width und height in deiner Image In Ihrem zweiten Beispiel und es sollte funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top