Qt 读取并且显示SVG图片

SVG图片是一种可缩放的矢量图片,是一个开放的图片标准。是由xml格式定义一种文件。
svg图片文件具有以下优势:

  • 基于xml语言
  • 可在图像质量不下降的情况下被放大
  • 比JPEG和PNG格式的文件要小很多
  • 支持DOM

QT中有专门读取svg图片的类,下面演示以下通过QT读取svg图片并且显示在QTableWidget控件上。

 1 void QtGuiSvg::slotLoadSvg() {
 2     QString strPath = "E:/shoudu.svg";
 3     QSvgRenderer* svgRender = new QSvgRenderer();
 4     svgRender->load(strPath);
 5 
 6     QPixmap* pixmap = new QPixmap(32,32);
 7     pixmap->fill(Qt::transparent);//设置背景透明
 8     QPainter p(pixmap);
 9     svgRender->render(&p);
10 
11     //1.直接采用控件显示
12     QLabel* label = new QLabel;
13     label->setPixmap(*pixmap);
14     label->setAlignment(Qt::AlignHCenter);
15     label->show();
16 
17     ui.tableWidget->setColumnCount(2);
18     ui.tableWidget->setRowCount(2);
19     ui.tableWidget->setRowHeight(0, 32);
20 
21     ui.tableWidget->setCellWidget(0, 0, label);
22 
23     QtGuiSignal* s = new QtGuiSignal;
24     s->setPixmap(pixmap);
25     s->setText(QStringLiteral("红色闪闪的五角星"));
26     ui.tableWidget->setRowHeight(1, 80);
27     ui.tableWidget->setCellWidget(1, 0, s);
28 
29     //2.直接显示图片
30     ui.tableWidget->setIconSize(QSize(32, 32));
31     ui.tableWidget->setItem(0, 1, new QTableWidgetItem(QIcon(*pixmap), QStringLiteral("红色闪闪的五角星")));
32 }

QtGuiSignal.ui

 

QtGuiSignal.h

 1 #pragma once
 2 
 3 #include <QWidget>
 4 #include "ui_QtGuiSignal.h"
 5 #include <QPixmap>
 6 
 7 class QtGuiSignal : public QWidget {
 8     Q_OBJECT
 9 
10 public:
11     QtGuiSignal(QWidget *parent = Q_NULLPTR);
12     ~QtGuiSignal();
13 
14     void setPixmap(QPixmap* pixmap);
15     void setText(QString str);
16 private:
17     Ui::QtGuiSignal ui;
18 
19     QPixmap* _pixmap;
20     QString _strText;
21 };

QtGuiSignal.cpp

 1 #include "QtGuiSignal.h"
 2 
 3 QtGuiSignal::QtGuiSignal(QWidget *parent)
 4     : QWidget(parent) {
 5     ui.setupUi(this);
 6 }
 7 
 8 QtGuiSignal::~QtGuiSignal() {
 9 }
10 
11 void QtGuiSignal::setPixmap(QPixmap* pixmap) {
12     _pixmap = pixmap;
13     ui.labelSvg->setPixmap(*pixmap);
14 }
15 
16 void QtGuiSignal::setText(QString str) {
17     _strText = str;
18     ui.labelText->setText(_strText);
19 }

运行结果:

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值