如何激活一个QPainter::beginNativePainting,画家不活跃的QGLWidget



我得到了一个带有以下类签名的*.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
}

相关内容

  • 没有找到相关文章

最新更新