标题:【求助】QPainter和QGLWidget结合画不出来QPainter的部分
作者:gphbl
日期:2011-07-09 13:52
内容:
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
#1 [bqlf1907 07-13 16:56]
试试将 QPainter painter(this);
改为 QPainter painter(this->viewport());
#2 [icebergw 12-03 16:36]
这个问题解决了吗,我也急需这方面的知识,求教啊!