2

QGraphicsViewQt アプリケーションでandを使用しようとQGraphicsSceneしていますが、何らかの理由で動作しません。mainクラスから実行すると機能するが、継承するコントローラークラスからは機能しない次のコードがありますQObject

 QGraphicsScene scene;
 scene.setSceneRect(0,0,200,200);
 scene.setBackgroundBrush(Qt::blue);
 QGraphicsView *view = new QGraphicsView();
 view->setScene(&scene);
 view->show();

シーンでやっmainたらブルーだけど、他のクラスでやったらシーンはホワイト。何が起こっている?

4

1 に答える 1

4

これに変更します:

{
QGraphicsScene * scene = new QGraphicsScene();//note that we allocate it on the heap
scene->setSceneRect(0,0,200,200);
scene->setBackgroundBrush(Qt::blue);
QGraphicsView *view = new QGraphicsView();
view->setScene(scene);
view->show();
<...>
}//your function ends here

あなたのバージョンでは、シーンはスタック上に作成されるので、このコードをクラスのどこかに置くと、シーンは関数の最後ですぐに終了します。だから白いです。ヒープに割り当てると、閉じ括弧の後も存続し、表示できるようになります。

後で削除することを忘れないでください!

于 2012-08-10T11:06:01.907 に答える