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));
    }


}

最后一个打印语句确实显示已添加一项,但仍然没有显示任何内容。我尝试过类似的方法,但这太有用了。谁能解释一下。

4

1 回答 1

1

您正在堆栈上创建场景对象。因此,场景将在构造函数结束时立即被销毁,因此不会显示任何内容。在堆上创建场景和/或使其成为类成员,它应该可以工作。

于 2013-01-20T22:51:06.300 回答