2012-02-29 17 views
0

私は現在、動画像をレンダリングするためQWidgetsを使用するアプリケーションに取り組んでいます、と私はQGlWidgetsにQWidgetsを使用してから移動しようとしていますが、私のアプリケーションがクラッシュし。私がやった 唯一の変更は以下のとおりです。このことからのQt 4.8.0にQGlWidgetとQWidgetの変更

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

これまで:

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

が、私は他の変更が必要とされているので、どのような場合には、より多くの私のコードを変更する必要がありますか?

私は現在、ときに一時オブジェクトのVisual Studio 2010、および4.8.0

答えて

1

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

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

あなたはQGLWidgetに参照渡しされている一時的なQGLFormatオブジェクトを作成しているように見えますQTを使用して、としていますあなたが無効な参照を持つことになります。

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

+0

このビット "QGLFormat(QGL :: SampleBuffers)"を削除しましたが、それでもクラッシュします。リリースのlibsを使ってビルドすると、エラーメッセージなしでアプリケーションが終了するだけです。デバッガの場合、デバッガはqglengineshadermanager_p.hのvoid setHasComplexGeometry(bool hasComplexGeometry)関数をポイントします。 – Dragarro

関連する問題