svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

目录

1. 问题的提出

2. 问题解决


1. 问题的提出

      今天通过一张像素为141 * 214,大小为426KB的svg格式的图片构造QGraphicsSvgItem对象,再通过Qt的Graphics View Framework框架,将QGraphicsSvgItem对象显示到场景视图上,代码如下:

#include 
#include 
......   // 其它头文件略

......   // 其它代码略

auto pBatteryChargeGraphicsScene = new QGraphicsScene(this);
ui->graphicsView->setScene(pBatteryChargeGraphicsScene);
   
QElapsedTimer timer;
timer.start();

auto pPeiDianGuiComponent = new QGraphicsSvgItem(QStringLiteral(":/uavGuarantee/image/batteryChargeShelters/peidiangui.svg"));

qDebug() << "The slow operation took" << timer.elapsed() << "milliseconds";

pPeiDianGuiComponent->setPos(100, 100);
pBatteryChargeGraphicsScene->addItem(pPeiDianGuiComponent);


......   // 其它代码略
其中ui->graphicsView为QGraphicsView类对象,第13行竟然耗时6376毫秒,如下:

最要命的是程序一起来就需要加载QGraphicsSvgItem对象上百个,那就更慢了,十分影响用户体验。

2. 问题解决

用Adobe Photoshop打开svg图片,选择“文件->导出->导出为...”,如下:

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决_第1张图片

svg图片构造QGraphicsSvgItem对象耗时很长的问题解决_第2张图片

在右侧“重新采样”下拉框中选择“两次线性”,然后单击右下角“导出”按钮,此时原来426KB的svg图片变为了10KB,然后改为加载此10KB的svg图片,效率提升很多,耗时如下:

你可能感兴趣的:(#,Qt平时遇到的疑难点,QGraphiSvgItem,Qt,GraphicsView,QGraphicsScene)