Как активировать QPainter::beginNativePainting , Painter неактивен 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|nderBackendOpenGlES2|Использование GLEW 1.12.0 RenderProject|nderBackendOpenGlES2|OpenGL 2.0: 1 QPainter beginNativePainting: Painter не активен QPainter setRenderHint: Painter должен быть активен, чтобы установить подсказки рендеринга QPainter beginNativePainting: Painter не активен QPainter beginNativePainting: Painter не активен

В моем коде нет такого объекта Painter, поэтому я предполагаю, что он входит в библиотеку *.dll. Итак, как я могу активировать Painter? (Кстати: в документации Qt сказано, что QGlWidget устарел)

Спасибо заранее!


person Ralf Wickum    schedule 10.07.2015    source источник
comment
Больше похоже на ошибку в той DLL, которую вы используете...   -  person peppe    schedule 10.07.2015


Ответы (1)


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
}
person Murat    schedule 13.07.2015