我正在开发一个当前使用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
答案 0 :(得分:2)
MyClass(QWidget *parent):QGlWidget(QGLFormat(QGL::SampleBuffers),parent)
{
...
}
看起来你正在创建一个临时的QGLFormat对象,该对象通过引用传递给QGLWidget,当该临时对象超出范围时,你将有一个无效的引用。
我会使用不同形式的构造函数。
答案 1 :(得分:1)
我发现了问题所在。 在我的QWidget类中,我有一个成员对象QPainter,我会在paint事件中重用它。我一直在搜索,发现这是一个不好的做法,所以现在我在paint事件的开头声明了一个QPainter对象,我的问题就解决了。