QDeclarativeImageProvider不加载容器中的图像


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

可以正常工作,但不能与Column或其他容器

一起工作
Column {
    Image {
            id: backImage
            source: "image://imageprovider/frontimage"
        }
}

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

OK。为什么?

声明:

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

注:对不起,我的英语不好。

~解决了~

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

它工作!非常感谢!

可能使用ImageProviderImage没有正确声明其宽度和高度?Column得到一点有趣的项目,不声明他们的宽度和高度。在第二个示例中,尝试在Image中硬编码widthheight,它应该可以工作。

最新更新