时间:2015-07-31 来源:

QQuickImageProvider在QML设计中的应用【编程语言】

QQuickImageProvider提供了一个可以供我们对QPixmap及多线程的Image请求.这个请求的文件甚至可以在网络上.它的好处是:

myimageprovider.h #ifndef MYIMAGEPROVIDER_H #define MYIMAGEPROVIDER_H #include <QQuickImageProvider> class QNetworkAccessManager; class MyImageProvider : public QQuickImageProvider { public: MyImageProvider(ImageType type, QSize * size, Flags flags) : QQuickImageProvider(type, QSize *size, SIGNAL(finished()), SLOT(quit())); eventLoop.exec(); if (reply->error() != QNetworkReply::NoError) return QImage(); QImage image = QImage::fromData(reply->readAll()); size->setWidth(image.width()); size->setHeight(image.height()); return image; } 上面我们从网路地址“http://lorempixel.com/”取得文件div+css+js切图, Flags flags = 0) virtual ~QQuickImageProvider() Flags flags() const ImageType imageType() const virtual QImage requestImage(const QString & id, const QSize & requestedSize) virtual QPixmap requestPixmap(const QString & id, const QSize & requestedSize) virtual QQuickTextureFactory * requestTexture(const QString & id, const QSize & requestedSize) 我们可以在QML中通过如下的方式来访问一个图片: Image { source: "image://myprovider/500/500/" } 显然我们看到的source不是一个具体的文件.并且网页切图制作, char *argv[]) { QGuiApplication app(argc, imageProvider ); view.setSource(QUrl(QStringLiteral("qrc:///Main.qml"))); view.setResizeMode(QQuickView::SizeRootObjectToView); view.show(); return app.exec(); } 注意这里的“myprovider”和我们上面的Image中访问的对应起来. 我们的main.qml文件如下: main.qml import QtQuick 2.0 import Ubuntu.Components 1.1 /*! \brief MainView with a Label and Button elements. */ MainView { // objectName for functional testing purposes (autopilot-qt5) objectName: "mainView" // Note! applicationName needs to match the "name" field of the click manifest applicationName: "imageprovider.liu-xiao-guo" /* This property enables the application to change orientation when the device is rotated. The default is false. */ //automaticOrientation: true // Removes the old toolbar and enables new features of the new header. useDeprecatedToolbar: false width: units.gu(60) height: units.gu(85) Page { title: i18n.tr("imageprovider") Image { id: img anchors.centerIn: parent source: "image://myprovider/500/500/" anchors.fill: parent onStatusChanged: { if(status == Image.Ready) indicator.running = false; } ActivityIndicator { id: indicator anchors.centerIn: parent running: false } MouseArea { anchors.fill: parent onClicked: { indicator.running = true; img.source = "image://myprovider/500/500/?seed=" + Math.random(1000) } } } } } 我们在点击图片时承接网站前端,它会自动地随机地从网站取得下一个图片,承接网站前端并显示出来:    整个项目的源码在:git clone https://gitcafe.com/ubuntu/imageprovider.git 版权声明:本文为博主原创文章psd切图html,未经博主允许不得转载.

下面我们来通过一个具体的例程来介绍如何使用QQuickImageProvider来从网路上请求一个我们需要的图像.

在Image中装载一个QPixmap或QImage而不是一个具体的图像文件在另外一个thread异步装载图片 通过访问一个图片可以通过如下的方式: Column { Image { source: "image://colors/yellow" } Image { source: "image://colors/red" } } 显然,手机div+css这里的yellow和red不是文件名.它的提供依赖于在QQuickImageProvider中的requestImage的具体实现.

点击次数:5086
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日photoshop制作逼真的磁带图标2014年01月28日HDOJ题目3478Catch(染色法判二分图)【Web前端】2015年03月12日java一个字符串在另一个字符串中出现的次数 【综合】2015年05月28日工地上的农民工 【编程语言】2015年04月17日“我爱智能”原创性博客索引 【数据库】2015年08月31日C#winform中判断文件是否处于打开状态 【云计算】2015年03月20日项目开发-iBatis事务源码之开启新事务 【编程语言】2015年04月17日二分查找【架构设计】2015年08月24日蚂蚁觅食和互联网算法 1,收藏 ,,2016年07月24日bzoj-2049Cave洞穴勘测 【编程语言】2015年08月16日DirectX3D游戏开发四Z-Buffer的实现 【研发管理】2015年08月29日Qt实现桌面雪花飘落代码2014年01月30日JavascriptWebSlider焦点图示例源码2014年01月29日MachineLearning-XVIII.ApplicationExamplePhotoOCR应用实例-照片OCR(Week10) 【Web前端】2015年04月13日C++的Web框架TreeFrog 1,收藏 ,,2016年07月24日iOS实现倒计时 【编程语言】2015年04月27日两台Ubuntu计算机利用Synergy共享鼠标和键盘【编程语言】2015年05月11日报表工具的动态数据源实现 【Web前端】2015年06月24日十大热招行业公布成都最受跳槽者欢迎【综合】2015年05月27日Libgdx1.5.2发布 【编程语言】2015年01月12日IOS把格式化的JSON字符串转换成字典 【综合】2015年02月11日EJB初学者怎样面对经常有的十一个疑惑2014年01月28日HDU1879继续畅通工程 【编程语言】2015年03月20日HDU1720A+BComing2014年11月04日Android代码规范 【Web前端】2014年12月01日用C语言操作MySQL数据库-通用版 【数据库】2015年07月24日Xcode6在iPhone5+iOS7模拟器上编译,上下有黑边问题 【编程语言】2015年01月24日SpringAOP高级——源码实现(2)SpringAOP中通知器(Advisor)与切面(Aspect)2017年11月15日CF538A(CuttingBanner-暴力找切割点)【编程语言】2015年04月29日js下写一个事件队列操作函数2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)