我得到了一个带有以下类签名的*.dll文件
class Render_WidgetGL: public QGLWidget {
Q_OBJECT
}
我创建了这样一个Render_WidgetGL对象,并将其设置为布局对象
Render_WidgetGL* renderWidget = new Render_WidgetGL(resources);
QGridLayout* gridLayout = new QGridLayout;
gridLayout->addWidget(renderWidget, 0, 1);
ui->horizontalLayout_5->addLayout(gridLayout);
当我启动并执行我的应用程序时,我得到以下消息:
RenderProject| underbackendopengles2 |Using GLEW 1.12.0RenderProject| underbackendopengles2 |OpenGL 2.0: 1QPainter beginNativePainting: Painter未激活QPainter setRenderHint: Painter必须激活以设置渲染提示QPainter beginNativePainting: Painter未激活QPainter beginNativePainting: Painter not active
我的代码中没有这样一个Painter对象,所以我假设它在*.dll库中。那么我如何激活Painter呢?(顺便说一句:Qt文档说,QGlWidget已经过时了)
提前感谢!
QGLWidget有一个paintEvent(),它显然使用那些beginNativePainting函数-在你的库(*.dll)。
所以你可以在*.dll中替换beginNativePainting中的paintEvent方法:
void Render_Widget_GL::paintEvent(QPaintEvent* event){
//.. do stuff
painter.beginNativePainting();
// .. do stuff
painter.endNativePainting();
//.. do stuff
}
. .与…:
void Render_Widget_GL::paintEvent(QPaintEvent* event){
//.. do stuff
painter.begin(this);
// .. do stuff
painter.end();
//.. do stuff
}