QDeclarativeImageProvider 不在容器中加载图像

Posted

技术标签:

【中文标题】QDeclarativeImageProvider 不在容器中加载图像【英文标题】:QDeclarativeImageProvider does not load image in container 【发布时间】:2011-04-28 05:27:39 【问题描述】:
Image 
        id: backImage
        source: "image://imageprovider/frontimage"
    

工作正常,但不适用于 Column 或其他容器

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

附:对不起我的英语。

~已解决~

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

有效! 非常感谢!

【问题讨论】:

【参考方案1】:

可能Image 使用ImageProvider 没有正确声明其宽度和高度? Columns 对未声明其宽度和高度的项目感到有些好笑。尝试在第二个示例中的 Image 中对 widthheight 进行硬编码,它应该可以工作。

【讨论】:

以上是关于QDeclarativeImageProvider 不在容器中加载图像的主要内容,如果未能解决你的问题,请参考以下文章