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)
     {
          ...
     }
}

コードをさらに変更する必要がありますか?そうであれば、他にどのような変更が必要ですか?

現在、VisualStudio2010とqt4.8.0を使用しています。

4

2 に答える 2

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

QGLWidgetへの参照によって渡される一時的なQGLFormatオブジェクトを作成しているように見えます。その一時的なオブジェクトがスコープ外になると、無効な参照が作成されます。

別の形式のコンストラクターを使用します。

于 2012-02-29T16:36:11.837 に答える
1

私は問題が何であるかを見つけました。QWidgetクラスには、paintイベントで再利用するメンバーオブジェクトQPainterがありました。検索を続けたところ、これは悪い習慣であることがわかったので、ペイントイベントの開始時にQPainterオブジェクトを宣言し、問題が解決しました。

于 2012-03-01T10:38:38.783 に答える