SvgView::SvgView(const QString &file, QWidget *parent)
: QWidget(parent)
{
doc = new QSvgRenderer(file, this); //QSvgRenderer将SVG图形绘制到绘图设备上
connect(doc, SIGNAL(repaintNeeded()), //文档需要更新时发出,通常用来实现动画效果
this, SLOT(update()));
}
void SvgView::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.setViewport(0, 0, width(), height());
doc->render(&p);
}
QSize SvgView::sizeHint() const
{
if (doc)
return doc->defaultSize();
return QWidget::sizeHint();
}
void SvgView::wheelEvent(QWheelEvent *e)
{
const double diff = 0.1;
QSize size = doc->defaultSize();
int width = size.width();
int height = size.height();
if (e->delta() > 0) { //此函数已废弃,用pixelDelta() / angleDelta() instead.
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);
}
// void MyWidget::wheelEvent(QWheelEvent *event)
// {
// QPoint numPixels = event->pixelDelta();
// QPoint numDegrees = event->angleDelta() / 8;
// if (!()) {
// scrollWithPixels(numPixels);
// } else if (!()) {
// QPoint numSteps = numDegrees / 15;
// scrollWithDegrees(numSteps);
// }
// event->accept();
// }