QPainter drawPolyline和drawLine
一、起因
最近在使用QCustomplot绘制曲线图时,遇到性能低下(卡顿甚至无响应)。测试的功能为用rand()
函数动态生成1000个数据点,其数据值范围为0<=X<1000, 0<=Y<100, X步进=0.1
,其代码如下:
#include <QApplication>
#include <QHBoxLayout>
#include <QWidget>
#include <QTimer>
#include "qcustomplot.h"
class WindowCustomPlot :public QWidget
{
public:
explicit WindowCustomPlot(QWidget* parent = nullptr)
:QWidget{
parent },
plot_{
new QCustomPlot{
this } }
{
auto layout = new QHBoxLayout{
this };
layout->addWidget(plot_);
resize(500, 200);
auto line = plot_->addGraph();
line->setPen(QPen(Qt::red, 2));//注意这里线宽大于1
plot_->xAxis->setRange(0, 500);
plot_->yAxis->setRange(50, 55);//注意这里设置的Y轴范围,而产生的数据为0~100直接
index_.reserve(500);
value_.reserve(500);
auto timer = new QTimer{
this };
connect(timer, &QTimer::timeout, this, [this, timer, line] {
if (value_.count() >= 500) {
timer->stop();
}
index_.push_back(index_.size());
value_.push_back(rand() % 100);
line->setData(index_, value_);
plot_->replot();
});
timer->start(35)