我是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语句确实显示已添加一个项目,但仍未显示任何内容。我尝试过一种类似于this的方法,但这种方法太有用了。任何人都可以解释一下。
答案 0 :(得分:1)
您正在堆栈上创建场景对象。 因此,场景将在构造函数的末尾立即销毁,因此不会显示任何内容。 在堆上创建场景和/或使其成为类成员,它应该可以工作。