Qt:quick和C++双向传递图片

1.从quick传递图片到C++:

这一步主要是在quick中,将对象的指针传回C++,再利用grabWindow的save把图片保存出来。


核心函数

bool saveImage(QObject *source)
    {
        QQuickItem *item = qobject_cast(source);
        if(!item)
        {
            qDebug("SaveImage fail: source is NULL");
            return false;
        }

        return item->window()->grabWindow().save(QDir::homePath() + "/test.png");
    }



2.从C++传递图片到quick:

这一步主要是用到了QQuickImageProvider,在继承了这个类后,重新实现requestPixmap函数,然后在改函数内返回一个QPixmap就可以了。


核心函数

    QPixmap requestPixmap(const QString &, QSize *, const QSize &)
    {
        return QPixmap();
    }


我也写了一个实例,可以在下方链接中下载

http://download.csdn.net/detail/wsj18808050/8603299


注:分辨率适配我只做了5S的,若要适配其他设备请手动更改。

注2:保存那里我没直接保存QPixmap是为了演示如何保存从quick传来的图像。

你可能感兴趣的:(Qt)