qt 加载SVG格式的图片

头文件:

#ifndef SVGWIDGET_H
#define SVGWIDGET_H

#include <QSvgWidget>
#include <QWheelEvent>
#include <QSvgRenderer>
#include "ui_svgwidget.h"

class SvgWidget : public QSvgWidget
{
	Q_OBJECT

public:
	SvgWidget(QWidget *parent = 0);
	~SvgWidget();

	void wheelEvent(QWheelEvent *event);

	void resizeEvent(QResizeEvent * event);


private:
	Ui::SvgWidget ui;
};

#endif // SVGWIDGET_H

源码文件:

#include "svgwidget.h"

SvgWidget::SvgWidget(QWidget *parent)
	: QSvgWidget(parent)
{
	ui.setupUi(this);
	QString name = "C:/Users/Administrator/Desktop/pic001.svg";

	load(name);
	resize(this->size());
}

SvgWidget::~SvgWidget()
{

}

void SvgWidget::resizeEvent(QResizeEvent * event)
{
	resize(this->size());
}

void SvgWidget::wheelEvent(QWheelEvent *event)

{
	const  double diff = 0.1;//每次滚轮滚动一定的值,图片大小改变的比例

	QSize size = renderer()->defaultSize();//获取图片的大小,以便进行缩放

	int width = size.width();
	int height = size.height();

	if (event->delta() > 0)//表示delta()>0表示鼠标向前滚动
	{
		width = int(this->width() + this->width()*diff);//放大/缩小后的宽度
		height = int(this->height() + this->height()*diff);
	}
	else
	{
		width = int(this->width() - this->width()*diff);
		height = int(this->height() - this->height()*diff);
	}

	resize(width, height);//利用新的长,框值对图片重新显示
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值