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