0

私は Qt 5.0 が初めてで、QWidget 内でサイズ 700x400 の「missionView」と呼ばれる QGraphicsView を使用して長方形を表示しようとしています。ただし、アプリケーションの実行時にグラフィック ビュー内に何も表示されません。これは、私がすべてを行っているQWidget「MainView」のコンストラクターです

MainView::MainView(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainView)
{
ui->setupUi(this);
QGraphicsScene scene(0, 0, 500, 500);
QGraphicsRectItem* myrect = scene.addRect(QRectF(0,0,15,5),QPen(), QBrush());


ui->missionView->setScene(&scene);

ui->missionView->setVisible(true);
ui->missionView->show();
ui->missionView->update();
printf("QGraphicsScene scene's items: %d\n",scene.items().size());
    for (int i = 0; i < scene.items().size(); i++) {
        printf("%d\n",scene.items().at(i));
    }


}

最後の print ステートメントは、1 つの項目が追加されたことを示していますが、まだ何も表示されていません。私はこれに似たアプローチを試みましたが、これはあまりにもうまくいきません。誰でもこれを説明できますか。

4

1 に答える 1

1

スタック上にシーン オブジェクトを作成しています。したがって、シーンはコンストラクターの最後ですぐに破棄されるため、何も表示されません。ヒープ上にシーンを作成するか、それをクラス メンバーにすると、機能するはずです。

于 2013-01-20T22:51:06.300 に答える