Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
来源:互联网 发布:java selenim设置超时 编辑:程序博客网 时间:2024/05/19 22:05
版权声明:本文为博主原创文章,未经博主允许不得转载。
本节最终解决为qml文件中的Image元素提供QImage类型的图片。利用到的类即QQuickImageProvider
最终需要提供的Image元素在main.qml文件中如下:
- Image {
- id: screenImg
- }
- Connections {
- target: client // 目标对象
- onCallQmlRefeshImg: {//连接自定义类Client来的信号,表示要刷新图片
- screenImg.source=""//更新图片
- screenImg.source= "image://screen"//image:必须
- }
在main中为我们的“screen”注册:
- int main(int argc, char *argv[])
- {
- QGuiApplication app(argc, argv);
- Client *client=new Client;
- QtQuick2ApplicationViewer viewer;
- viewer.engine()->rootContext()->setContextProperty("client", client); // 将新的类映射为QML的一个对象,c++交互
- viewer.engine()->addImageProvider(QLatin1String("screen"), client->imgProvider);//这句一个要在下一句之前,为引擎添加图片提供
- viewer.setMainQmlFile(QStringLiteral("qml/remoteContralClient/main.qml"));
- viewer.showExpanded();
- return app.exec();
- }
screenImageProvider.h图片提供类:
- #ifndef SCREENIMAGEPROVIDER_H
- #define SCREENIMAGEPROVIDER_H
- #include <QQuickImageProvider>
- #include <QImage>
- #include <QSize>
- #include <QColor>
- class ScreenImageProvider : public QQuickImageProvider
- {
- public:
- ScreenImageProvider()
- : QQuickImageProvider(QQuickImageProvider::Image)
- {
- }
- QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize)//这个是自动调用的。路径"image://screen",如需要使用id等参数,如"image://screen/id"等
- {
- return this->img;
- }
- QImage img;
- };
- #endif // SCREENIMAGEPROVIDER_H
- class Client : public QObject
- {
- Q_OBJECT
- public:
- explicit Client(QObject *parent = 0);
- ScreenImageProvider *imgProvider;
- signals:
- void callQmlRefeshImg();
- private:
- QImage img;
- }
- QByteArray a;
- in>>a;//in是一个datastream,从网络中获取了图片。
- img.QImage::loadFromData(a);
- imgProvider->img=img;//将图片传输给imgProvider类的img
- emit callQmlRefeshImg();//告诉qml要刷新图片
除可以提供QImage外,同理。还可以是QPixmap
1 0
- Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
- Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
- Qt模块化笔记之Qt_Quick——给Qt编写的安卓程序添加图标
- Qt模块化笔记之Qt_Quick——引入
- Qt模块化笔记之Qt_Quick——认识所有可视类型
- Qt模块化笔记之Qt Widgets——日历类
- Qt模块化笔记之sql——前期准备
- Qt模块化笔记之sql——连接数据库
- Qt模块化笔记之sql——执行sql语句
- Qt模块化笔记之sql——事务处理的实现
- Qt模块化笔记之sql——数据库模型视图
- Qt模块化笔记之core——动画框架
- Qt模块化笔记之core——线程相关
- Qt模块化笔记之core——QXmlStreamReader的使用
- Qt模块化笔记之core——QXmlStreamWriter写XML
- Qt模块化笔记之core——容器类归纳
- Qt模块化笔记之core——事件QEvent
- Qt模块化笔记之sql——事务处理的实现
- Leetcode225: Candy
- mysql的字符集和整理是怎么一回事
- 排序条件的设置
- 填算式
- HDU 1233.还是畅通工程【最小生成树 kruskal算法(并查集)+prim算法】【1月8】
- Qt模块化笔记之Qt_Quick——用QQuickImageProvider给Image组件添加图片
- Python中字符串操作函数
- java jar文件为什么双击没反应
- 【慕课笔记】第二章 变量和常量 第3节 变量是什么
- SPOJ GSS系列
- 【Linux运维-集群技术进阶】Nginx+Tomcat实现Web服务器的负载均衡
- C++中explicit关键字的作用
- 【php】exit()与die()函数详解
- 欢迎来到我的CSDN