QQuickImageProvider的使用
2022/8/27 6:23:20
本文主要是介绍QQuickImageProvider的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、概述
QQuickImageProvider用于在QML应用程序中提供高级图像的加载功能。(在c++中提供图像路径,编辑等底层数据交互逻辑,在qml端调用显示)它允许QML中的图像被:
- 使用QPixmaps加载,而不是实际的图像文件。
- 在一个单独的线程中异步加载。
二、具体用法
1、定义一个继承于QQuickImageProvider类的图像提供程序并实现,注意需要重写requestPixmap或函数requestImage
图像提供类的声明:
/*myimageproviter.h*/
#ifndef MYIMAGEPROVITER_H #define MYIMAGEPROVITER_H #include <QQuickImageProvider> class MyImageProviter:public QQuickImageProvider //图像提供程序 { public: MyImageProviter() : QQuickImageProvider(QQuickImageProvider::Pixmap) //构造函数 { } QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize); //重写requestPixmap函数 QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize); //重写requestImage函数 }; #endif // MYIMAGEPROVITER_H
图像提供类的实现:
/*myimageproviter.c*/
#include "myimageproviter.h" #include <QPixmap> #include <QCoreApplication> #include <QPainter> #include <QDebug> //requestPixmap函数的重写,在qml中使用source加载图片时会自动调用requestPixmap或requestImage函数(根据图片类型不同),返回QPixmap或QImage对象 QPixmap MyImageProviter::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) { QString s=":/ima/" + id; //本地图片加载路径的拼接,根据id不同可以调用不同图片 QPixmap pix; //新建一个QPixmap对象 pix.load(s); //加载图片 pix=pix.scaled(150,250); //图片缩放 return pix; //返回QPixmap对象 } QImage MyImageProviter::requestImage(const QString &id, QSize *size, const QSize &requestedSize) { QImage im; im.load(":/ima/R-C.png"); return im; }
2、使用QQmlEngine::addImageProvider 函数将图片提供类的对象(注册)到qml引擎中, 并且指定标识符, 该标识符在qml中使用。
/*main.cpp/*
QQmlApplicationEngine engine;
engine.addImageProvider("ima33",new MyImageProviter()); //将图像提供类注册到qml引擎中,在qml中标识符(名字)为"ima33"
//engine.addImageProvider("标识符",图片提供类对象);
3、在qml中调用加载图片
需要使用 source: "image://标识符/图片id" 的格式来加载
/*main.qml*/
Image { //Image图片控件 id: hhhhh x:200 y:200 // width: 135 // height: 150 // sourceSize.width: 120 // sourceSize.height: 120 source: "image://ima33/R-C.png" //指定资源信息。会自动调用图片提供类的requestPixmap或requestImage函数, //将id、QSize等信息传给requestPixmap或requestImage函数的形参,返回QPixmap或QImage对象,并自动把图片画出来(加载出来) //source: "image://标识符/图片id" }
这篇关于QQuickImageProvider的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享