0

我正在开发一个当前使用 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

4

2 回答 2

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

看起来您正在创建一个临时 QGLFormat 对象,该对象通过引用传递给 QGLWidget,并且当该临时对象超出范围时,您将获得无效引用。

我会使用不同形式的构造函数。

于 2012-02-29T16:36:11.837 回答
1

我发现了问题所在。在我的 QWidget 类中,我有一个成员对象 QPainter,我将在绘制事件中重用它。我一直在寻找,发现这是一个不好的做法,所以现在我在绘制事件开始时声明了一个 QPainter 对象,我的问题就解决了。

于 2012-03-01T10:38:38.783 回答