我正在尝试学习如何使用绘图功能。到现在为止,我已经能够使用QPainter类在QWidget上绘制一些圆形,如下所示:
在MainWindow.h中,我添加了:
virtual void paintEvents(QPaintEvent *event);
然后在MainWindow.cpp中添加:
void MainWindow::paintEvents(QPaintEvent *event) {
QPainter painter(this);
painter.drawEllipse( 305, 55, 475, 475 );
painter.drawEllipse( 320, 70, 445, 445 );
painter.end();
}
这会以像素为单位画一些圆圈,但我需要svg。那么我该如何使用QPainter类来绘制svg圆呢?
您可以使用Qt SVG module。如果使用qmake,则将QT += svg
添加到.pro
文件中,然后就可以使用SVG类。然后,您可以利用QSvgRenderer与您的QPainter实例一起绘制svg文档,例如:
#include <QSvgRenderer>
...
void MainWindow::paintEvents(QPaintEvent *event) {
QPainter painter(this);
QSvgRenderer svgr("/path/to/img.svg");
svgr.render(&painter);
painter.end();
}
根据文档render
方法还有另外两个重载,这些重载使您可以控制在哪里渲染什么。您可能还希望从QByteArray或具有适当构造函数或加载方法的XML流中加载svg内容。