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);//利用新的長,框值對圖片重新顯示
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章