当前位置: 首页 > news >正文

Qt QML解决SVG图片显示模糊的问题

前言

在QML中直接使用SVG图片,使用Image控件加载资源,显示出来图片是模糊的,很影响使用体验。本文介绍重新绘制SVG图片,然后注册到QML中使用。

效果图:
在这里插入图片描述
左边是直接使用Image加载资源显示的效果
右边是重绘后的效果

正文

为了能在QML中注册使用,将继承于QQuickPaintedItem进行重绘。
关键代码

#include "svgimage.h"
#include <QPointF>

SvgImage::SvgImage(QQuickItem *parent) : QQuickPaintedItem(parent)
{
    m_pSvgRenderer = new QSvgRenderer(this);
}

void SvgImage::declareQML()
{
    qmlRegisterType<SvgImage>("SvgImage", 1, 0, "SvgImage");
}

void SvgImage::writeSource(QString sourcePath) {
    if(sourcePath.isEmpty()){
        return;
    }
    m_source = sourcePath;
    m_source.replace("qrc", "");
    m_pSvgRenderer->load(m_source);
    emit sourceChanged();
    update();
}

void SvgImage::paint(QPainter *painter)
{
    QRectF rect = QRectF(QPointF(0,0), QSizeF(width(), height()));
    m_pSvgRenderer->render(painter, rect);
}

本文demo提供了在QML中使用的完整流程.

Demo 下载

相关文章:

  • Linux FILE文件操作1-文件指针、文件缓冲区(行缓冲、全缓冲、无缓冲)的验证
  • 电容器基础观念
  • 怎样使用Modbus转Profinet网关连接USB转485模拟从站配置案例
  • Elasticsearch 向量检索详解
  • Qt QML实现视频帧提取
  • Hive SQL 精进系列:SUBSTR 函数的多样用法
  • 【Idea】 xml 文本粘贴保持原有文本的缩进格式
  • 【NLP】 6. 词向量的可变性及其影响
  • 基于llama.cpp的QwQ32B模型推理
  • 机试准备第18天
  • Netty基础—7.Netty实现消息推送服务二
  • windows版本的时序数据库TDengine安装以及可视化工具
  • 图论——广度优先搜索实现
  • adb常用的命令
  • centos 7误删/bash 拯救方法
  • 腾讯云MySQL数据库架构分析与使用场景
  • esp32s3文心一言/豆包(即火山引擎)大模型实现智能语音对话--流式语音识别
  • 【Function】Azure Function通过托管身份或访问令牌连接Azure SQL数据库
  • 浏览器好用的去广告插件和暗黑模式护眼插件
  • Ubuntu 配置 github 代理
  • 网警查处编造传播“登顶泰山最高可得3万奖金”网络谣言者
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • “即买即退”扩容提质,上海静安推出离境退税2.0版新政
  • “五一”假期,又有多地将向社会开放政府机关食堂
  • 体坛联播|安切洛蒂预计执教巴西国家队,利拉德确诊跟腱撕裂
  • 餐饮店直播顾客用餐,律师:公共场所并非无隐私,需对方同意