想要利用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
請問該如何讓解決?
uj5u.com熱心網友回復:
試一下delete painter;painter=NULL;uj5u.com熱心網友回復:
試了一下,還是不行。
uj5u.com熱心網友回復:
QPainter* p = new QPainter;
p->begin(this);
p->setBrush(QBrush(QColor(222,222,123)));
p->drawRect(0,0,10,20);
p->end();
delete p;
p=NULL;
uj5u.com熱心網友回復:
這個不管用呀?樓主最后怎么解決的呢?求賜教。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17580.html
標籤:工具平臺和程序庫
上一篇:Pclint找不到頭檔案的問題
