QT 中paintEvent的问题

[复制链接]
查看11 | 回复4 | 2021-1-27 05:08:48 | 显示全部楼层 |阅读模式
想要利用QT画一个雷达图,编写了如下的程序:
voidRadarDlg::paintEvent(QPaintEvent*)
{
QPainter*painter=newQPainter(this);
painter->setRenderHint(QPainter::Antialiasing);
painter->setRenderHint(QPainter::SmoothPixmapTransform);
painter->setRenderHint(QPainter::TextAntialiasing);
drawRadarType(painter);
drawLabel(painter);
drawData(painter);
drawAxisLabel(painter);
}
但是运行时,会报警告:
QBackingStore::endPaint()calledwithactivepainteronbackingstorepaintdevice
QPaintDevice:Cannotdestroypaintdevicethatisbeingpainted
然后给paintEvent加上begin()和end()
voidCRadarDlg::paintEvent(QPaintEvent*)
{
QPainter*painter=newQPainter(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:Painteralreadyactive
请问该如何让解决?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
试一下deletepainter;painter=NULL;
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
引用1楼这是一个正经昵称的回复:试一下deletepainter;painter=NULL;
试了一下,还是不行。
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
引用2楼qq_41621832的回复:Quote: 引用1楼这是一个正经昵称的回复:
试一下deletepainter;painter=NULL;

试了一下,还是不行。

QPainter*p=newQPainter;
p->begin(this);
p->setBrush(QBrush(QColor(222,222,123)));
p->drawRect(0,0,10,20);
p->end();
deletep;
p=NULL;
回复

使用道具 举报

千问 | 2021-1-27 05:08:48 | 显示全部楼层
这个不管用呀?楼主最后怎么解决的呢?求赐教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行