Изменение QWidget с QGlWidget в Qt 4.8.0 - PullRequest
0 голосов
/ 29 февраля 2012

Я работаю над приложением, которое в настоящее время использует QWidgets для рендеринга движущихся изображений, и я пытаюсь перейти от использования QWidgets к QGlWidgets, но мое приложение продолжает падать. Единственные изменения, которые я сделал:

из этого:

class MyClass : public QWidget 
{
     MyClass(QWidget *parent):QWidget(parent)
     {
          ...
     }
}

к этому:

class MyClass : public QGlWidget 
{
     MyClass(QWidget *parent):QGlWidget(QGLFormat(QGL::SampleBuffers),parent)
     {
          ...
     }
}

Нужно ли мне больше модифицировать мой код, если да, то какие еще модификации нужны?

В настоящее время я использую Visual Studio 2010, и qt 4.8.0

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012
MyClass(QWidget *parent):QGlWidget(QGLFormat(QGL::SampleBuffers),parent)
     {
          ...
     }

Похоже, вы создаете временный объект QGLFormat, который передается по ссылке на QGLWidget, и когда этот временный объект выходит из области видимости, у вас будет недопустимая ссылка.

Я бы использовал другую форму конструктора.

1 голос
/ 01 марта 2012

Я нашел, в чем проблема.В моем классе QWidget у меня был объект-член QPainter, который я бы использовал повторно в событии рисования.Я продолжил поиск и обнаружил, что это плохая практика, поэтому теперь я объявил объект QPainter в начале события рисования, и моя проблема решена.

...