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 }
運行結果: