QT读取并且显示SVG图片

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

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

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

void QtGuiSvg::slotLoadSvg() {
	QString strPath = "E:/shoudu.svg";
	QSvgRenderer* svgRender = new QSvgRenderer();
	svgRender->load(strPath);

	QPixmap* pixmap = new QPixmap(32,32);
	pixmap->fill(Qt::transparent);//设置背景透明
	QPainter p(pixmap);
	svgRender->render(&p);

	//1.直接采用控件显示
	QLabel* label = new QLabel;
	label->setPixmap(*pixmap);
	label->setAlignment(Qt::AlignHCenter);
	label->show();

	ui.tableWidget->setColumnCount(2);
	ui.tableWidget->setRowCount(2);
	ui.tableWidget->setRowHeight(0, 32);

	ui.tableWidget->setCellWidget(0, 0, label);

	QtGuiSignal* s = new QtGuiSignal;
	s->setPixmap(pixmap);
	s->setText(QStringLiteral("红色闪闪的五角星"));
	ui.tableWidget->setRowHeight(1, 80);
	ui.tableWidget->setCellWidget(1, 0, s);

	//2.直接显示图片
	ui.tableWidget->setIconSize(QSize(32, 32));
	ui.tableWidget->setItem(0, 1, new QTableWidgetItem(QIcon(*pixmap), QStringLiteral("红色闪闪的五角星")));
}

QtGuiSignal.ui
在这里插入图片描述

QtGuiSignal.h

#pragma once

#include <QWidget>
#include "ui_QtGuiSignal.h"
#include <QPixmap>

class QtGuiSignal : public QWidget {
	Q_OBJECT

public:
	QtGuiSignal(QWidget *parent = Q_NULLPTR);
	~QtGuiSignal();

	void setPixmap(QPixmap* pixmap);
	void setText(QString str);
private:
	Ui::QtGuiSignal ui;

	QPixmap* _pixmap;
	QString _strText;
};

QtGuiSignal.cpp

#include "QtGuiSignal.h"

QtGuiSignal::QtGuiSignal(QWidget *parent)
	: QWidget(parent) {
	ui.setupUi(this);
}

QtGuiSignal::~QtGuiSignal() {
}

void QtGuiSignal::setPixmap(QPixmap* pixmap) {
	_pixmap = pixmap;
	ui.labelSvg->setPixmap(*pixmap);
}

void QtGuiSignal::setText(QString str) {
	_strText = str;
	ui.labelText->setText(_strText);
}

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

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值