• 4668阅读
  • 2回复

【求助】QPainter和QGLWidget结合画不出来QPainter的部分 [复制链接]

上一主题 下一主题
离线gphbl
 
只看楼主 倒序阅读 楼主  发表于: 2011-07-09
resizeGL和initializeGL都没有什么代码,GLWidget初始化时已经setAutoFillBackground和AutoSwapBuffers为false了。
重新实现的paintEvent中代码如下
makeCurrent();
glPushAttrib(GL_ALL_ATTRIB_BITS);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
...
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
...
glCallList(1);//画了很多点和线
...

QPainter painter(this);
painter.setPen(QPen(Qt::blue, 1, Qt::SolidLine, Qt::FlatCap));
painter.setBrush(QBrush(Qt::blue, Qt::SolidPattern));
painter.drawLine(width()/2,0,width()/2,height());

运行结果是QPainter画的部分显示,3D部分(CallList里的)正常;
如果同时注掉glClear()和glCallList()才能正常显示QPainter的绘图部分。

实在是想不通有什么地方有问题,和overpainting的例子对照了好多遍。
运行环境是Linux 10.04下的Eclipse集成Qt
离线bqlf1907

只看该作者 1楼 发表于: 2011-07-13
试试将 QPainter painter(this);
改为 QPainter painter(this->viewport());
离线icebergw

只看该作者 2楼 发表于: 2018-12-03
这个问题解决了吗,我也急需这方面的知识,求教啊!
快速回复
限100 字节
 
上一个 下一个