QT 中paintEvent的问题
想要利用QT画一个雷达图,编写了如下的程序:
void RadarDlg::paintEvent( QPaintEvent * )
{
QPainter *painter = new QPainter(this);
painter->setRenderHint(QPainter::Antialiasing);
painter->setRenderHint(QPainter::SmoothPixmapTransform);
painter->setRenderHint(QPainter::TextAntialiasing);
drawRadarType(painter);
drawLabel(painter);
drawData(painter);
drawAxisLabel(painter);
}
但是运行时,会报警告:
QBackingStore::endPaint() called with active painter on backingstore paint device
QPaintDevice: Cannot destroy paint device that is being painted
然后给paintEvent加上begin()和end()
void CRadarDlg::paintEvent( QPaintEvent * )
{
QPainter *painter = new QPainter(this);
painter->begin (this);
painter->setRenderHint(QPainter::Antialiasing);
painter->setRenderHint(QPainter::SmoothPixmapTransform);
painter->setRenderHint(QPainter::TextAntialiasing);
drawRadarType(painter);
drawLabel(painter);
drawData(painter);
drawAxisLabel(painter);
painter->end ();
}
还是有警告:
QPainter::begin: Painter already active
请问该如何让解决?