• 7236阅读
  • 2回复

QT 怎么在paintEvent外完成绘制操作 [复制链接]

上一主题 下一主题
离线hechunhu2008
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-25
       我设置了this->setAttribute(Qt::WA_PaintOutsidePaintEvent);然后在linux桌面版本上能够运行,但是在嵌入式Linux的板子上不能运行。会出现错误
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1

  有谁能帮我解决这个问题,或者有什么其他的办法,是我能够在paintEvent外完成绘制操作。谢谢各位大侠。

QT学习中~~!
离线xuexuankr
只看该作者 1楼 发表于: 2011-10-25
从qt源码可以发现,正常情况下,qwidget取得的engine是为空。而qimage在取engine会做判断,如果为空,则创建一个出来。然后paintevent的关键作用是把qwidget类型转换为qimage,从而可以获取engine,之后就可以完成绘制动作。所以不走paintevent流程而要绘图,看看qimage能不能和桌面DC结合下。
离线hechunhu2008
只看该作者 2楼 发表于: 2011-10-25
回 1楼(xuexuankr) 的帖子
谢谢  xuexuankr   的回复,你的意思是使用QImage对吗,行,我试试看。主要是我想在paintEvent函数外绘制图,(比如划线、画矩形等)。
    在paintEvent函数外画出矩形后,原来的图形还在,只是原来的图形上覆盖了一个矩形。我想要的就是这种效果,就不知道QImage能不能达到这个效果。
QT学习中~~!
快速回复
限100 字节
 
上一个 下一个