如何激活 QPainter::beginNativePainting ,Painter 不活动的 QGLWidget?

How to activate a QPainter::beginNativePainting , Painter inactive QGLWidget?

我得到一个带有以下 class 签名的 *.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|nderBackendOpenGlES2|使用 GLEW 1.12.0 渲染项目|nderBackendOpenGlES2|OpenGL 2.0:1 QPainter beginNativePainting:画家未激活 QPainter setRenderHint:Painter 必须处于活动状态才能设置渲染提示 QPainter beginNativePainting:画家未激活 QPainter beginNativePainting:Painter 未激活

我的代码中没有这样的 Painter 对象,因此我假设它位于 *.dll 库中。那么如何激活 Painter 呢? (顺便说一句:Qt docssay,那个 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
}

..与...:[=​​13=]

void Render_Widget_GL::paintEvent(QPaintEvent* event){
//.. do stuff 
painter.begin(this);
// .. do stuff
painter.end();
//.. do stuff
}