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 }
运行结果: