QdeclarativeImageProvider lädt das Bild nicht in den Container
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!
Lösung
Möglicherweise das das Image
Verwendung der ImageProvider
Dekliert seine Breite und Höhe nicht richtig? Column
S 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