【问题标题】:How to activate a QPainter::beginNativePainting , Painter inactive QGLWidget?如何激活 QPainter::beginNativePainting , Painter 不活动的 QGLWidget?
【发布时间】:2023-03-25 09:26:02
【问题描述】:

我得到了一个带有以下类签名的 *.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:Painter 未激活 QPainter setRenderHint:Painter 必须处于活动状态才能设置渲染提示 QPainter beginNativePainting:Painter 未激活 QPainter beginNativePainting:Painter 未激活

我的代码中没有这样的 Painter 对象,所以我假设它包含在 *.dll 库中。那么如何激活 Painter 呢? (顺便说一句:Qt docssay,那个 QGlWidget 已经过时了)

提前谢谢!

【问题讨论】:

  • 看起来更像是您正在使用的那个 DLL 中的一个错误...

标签: qt qt5 qglwidget


【解决方案1】:

QGLWidget 有一个paintEvent(),它显然在您的库 (*.dll) 中使用了这些 beginNativePainting 函数。

所以你可以在 *.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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多