//绘制SVG图形:
- 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 (!numPixels.isNull()) {
- // scrollWithPixels(numPixels);
- // } else if (!numDegrees.isNull()) {
- // QPoint numSteps = numDegrees / 15;
- // scrollWithDegrees(numSteps);
- // }
- // event->accept();
- // }
//生成SVG图形:
- #include <QApplication>
- #include <QtGui>
- #include <QtSvg>
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
- QSvgGenerator svgGen;
- svgGen.setFileName("test.svg");
- QRectF rectangle(10.0, 20.0, 80.0, 60.0);
- QPainter painter;
- painter.begin(&svgGen);
- QPen pen(Qt::red);
- painter.setPen(pen);
- painter.drawEllipse(rectangle);
- rectangle.moveRight(100);
- painter.drawRect(rectangle);
- rectangle.moveRight(100);
- QRectF source(0.0, 0.0, 70.0, 40.0);
- QImage image("Greenstone.bmp");
- painter.drawImage(rectangle, image, source);
- painter.end();
- return 0;
- }