• 22227阅读
  • 6回复

[提问]QPainter提示Painter not active [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-13
我需要在一个Label上画图,连续画了很多张以后突然就画不出来了,提示
QPainter::begin: Paint device returned engine == 0, type: 2

QPainter::setPen: Painter not active

QPainter::begin: Paint device returned engine == 0, type: 2

QPainter::setPen: Painter not active


我是这样做的:

    opix = new QPixmap(ui->label_25->size());

    QPainter *oHisPainter = new QPainter(opix);

    oHisPainter->fillRect(0,0,1861,361,Qt::white);

    oHisPainter->setPen(QPen(QColor(0,0,0)));

    oHisPainter->drawLine(18,321,1840,321);

    oHisPainter->drawLine(1840,321,1835,316);

    oHisPainter->drawLine(1840,321,1835,326);

    oHisPainter->drawText(1842,321,tr("x"));
网上看到有人说时堆栈溢出,不知道是这个原因么?该怎么解决呢?
离线虫哥
只看该作者 1楼 发表于: 2011-04-13
   绘画动作应该放在paintevent里面写就行了,在外面直接画应该是不行的
离线11qiaoqi
只看该作者 2楼 发表于: 2011-04-13
关注!!!
离线yzpdsg

只看该作者 3楼 发表于: 2011-04-13
回 1楼(虫哥) 的帖子
谢谢回复!你的意思是我重新实现那个paintEvent函数?
我不明白的是我的问题是在画了很多次以后才出现的,如果每次程序运行只画几张的话是没有问题的。我现在有4个文件夹,每个都有大约150张图片。每次运行程序连续跑任意两个文件夹的话没有问题,再跑第三个文件夹就会出问题。很费解。。。
离线虫哥
只看该作者 4楼 发表于: 2011-04-14
这个我也不太清楚,你可以试下重写paintevent,我曾经遇到这个错误,然后把绘制动作放paintevent里就行了。
离线yzpdsg

只看该作者 5楼 发表于: 2011-04-15
恩好吧,再次谢谢你!
离线zpf123
只看该作者 6楼 发表于: 2011-06-24
我也遇到了这个问题提示:          QPainter::setPen: Painter not active

不知道什么意思?谢谢了
快速回复
限100 字节
 
上一个 下一个