首页 > 其他分享 >QQuickImageProvider的使用

QQuickImageProvider的使用

时间:2022-08-27 01:34:08浏览次数:56  
标签:QSize const QQuickImageProvider qml 使用 requestPixmap id 加载

一、概述

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" 
       }

 

标签:QSize,const,QQuickImageProvider,qml,使用,requestPixmap,id,加载
From: https://www.cnblogs.com/tgc-3/p/16608537.html

相关文章

  • Seatunnel超高性能分布式数据集成平台使用体会
    @目录概述定义使用场景特点工作流程连接器转换为何选择SeaTunnel安装下载配置文件部署模式入门示例启动脚本配置文件使用参数示例Kafka进Kafka出的ETL示例FlinkRun传递参......
  • .NET Core 中正确使用 HttpClient 的姿势
    为了更方便在服务端调用HTTP请求,微软在.NETFramework4.x的时候引入了HttpClient。但HttpClient有很多严重问题,一直饱受诟病,比如InfoQ的这篇文章 t.cn/Evzy80y,......
  • JS操作补充与jQuery的基本使用
    JS操作补充与jQuery的基本使用JS获取用户输入首先我们获取用户输入的时候会面临一个问题,就是我们其实如果将接受用户输入的放在上方的话那么就会因为是解释性语言从上至......
  • springboot 使用 JSR303 校验
    JSR303用于后端校验前端传来的数据如何使用引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation<......
  • jQuery介绍、jQuery导入方式、基本使用
    目录jQuery(writelessdomore)jQuery的优势有了jQuery那我们还使用BOM与DOM吗?jQuery导入导入方式jQuery提供的CDN服务优点与缺点添加到自定义模板jQuery基本使用1.jQuary......
  • QT使用HTTP下载来实现程序下载自动安装退出,同时读取JSON更新信息。
    最近在用QT开发一套免费的HelpDesk系统,参考了网上的方法,实现了程序自动下载更新和程序自动退出再安装新程序,为了感谢网页的无私分享,自己也特地分享给大家,希望可以帮助到大......
  • 关于微信小程序的使用
    首先第一步是下载微信开发者工具,这点可在官网看有详细介绍.一.创建项目在这里使用的是javascript-基础模板 二.小程序入口app.json重点介绍下文件的......
  • 使用jad反编译jar/war包项目
    使用jd-gui,只能反编译具体一个.class文件,不能完成整个项目的反编译;而jad.exe能够满足反编译整个项目的需求。首先,下载jad.exe下载地址:https://varaneckas.com/jad/解压......
  • vue3使用wangeditor富文本编辑器
     npm下载 1npmiwangeditor-S       在要使用的页面导入1importEWangEditorfrom"wangeditor";2import{onMounted,reactive}from"vue";......
  • C语言字符串处理函数 gets()和fgets()的区别及使用
    字符串函数(Stringprocessingfunction)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数。本文主要介绍C语言中符串处理函数gets()和fgets()的区别使用方法,......