1. 创建一个继承于QWidget的类,重载一个叫paintEvent的函数,
2. 在paintEvent函数中调用Qpainter类,此类是一个重量级类,在paintEvent函数尽量只创建一次
3. 如描画柱状图:在paintEvent函数中
QPainter painter(this);
QPen pen;
pen.setColor(Qt::blue);
pen.setWidthF();
painter.setPen(pen);
painter.drawRect(posx, posy, width, high);
这样即画出一个起始点在(posx,posy),宽为width,高为high的矩形了
填充可以选择QT自带的填充模式 如
painter.setBrush(Qt::Dense4Pattern);
也可以选择自定义的图片进行填充 如
painter.drawPixmap(posx, posy, width, high,QPixmap(PHEV_GRAPH_BAR_BLUE_PNG));
描画多边形,并用图片进行填充
painter.setBrush(QBrush(QPixmap(PHEV_GRAPH_UP_GRAPH_PNG)));
painter.drawPolygon(points, allPointNumber, Qt::WindingFill);
points:为一个QPointF数组,
allPointNumber:为总共的节点数
描画折线:知道前后两个点的位置
painter.drawLine(QPointF(x1, y1), QPointF(x2, y2));
Note:
paintEvent函数在类创建的时候会调一次
update()会触发paintEvent一次
repaint()也会触发paintEvent一次