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 }

运行结果:
在这里插入图片描述


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM