最近做的项目需要同时开启 8 个界面,当数据量很大时,页面切换时,会导致卡顿,找了很久也么找到原因。最终在大神的帮助下找到了。
将 QPen 的设置放到了 for 循环中间,当数据量大时,不断的设置,导致界面卡。
{
QPainter painter(this);
QPen pen;
QPainterPath path;
int size = m_curveData.size();
if(size == 0)
return;
for(int i=0; i<size; i++)
{
qreal x = rect.left() + i*rect.width()/size;
qreal y = rect.bottom() - (yVal-m_yMin)*rect.height()/(m_yMax-m_yMin);
if(i==0)
path.moveTo(x, y);
else
path.lineTo(x, y);
/* 此处放到 for 循环外面
if(dataType == Real){
pen.setColor(QColor(0,255,0));
}
else if(dataType == Min){
pen.setColor(QColor(255,255,0));
}
else if(dataType == Max){
pen.setColor(QColor(255,0,0));
}
else if(dataType == Avg){
pen.setColor(QColor(0,0,255));
}
painter.setPen(pen);
*/
}
if(dataType == Real){
pen.setColor(QColor(0,255,0));
}
else if(dataType == Min){
pen.setColor(QColor(255,255,0));
}
else if(dataType == Max){
pen.setColor(QColor(255,0,0));
}
else if(dataType == Avg){
pen.setColor(QColor(0,0,255));
}
painter.setPen(pen);
painter.drawPath(path);
}