• 8680阅读
  • 4回复

请教一个QGraphicsView和QGraphicscene的简单例子 [复制链接]

上一主题 下一主题
离线omss
 

只看楼主 倒序阅读 楼主  发表于: 2011-04-03
在Qtcreator的help里看到一个简单的例子:
  1. QGraphicsScene scene;
  2. scene.addText("Hello, world!");
  3. QGraphicsView view(&scene);
  4. view.show()



我通过qtcreator建了个窗口想要实现之,具体是这么做的,窗口见下图,窗口中间放了一个QGgraphicsView.
main.cpp是自动生成的:
  1. #include <QtGui/QApplication>
  2. #include "stt3.h"
  3. int main(int argc, char *argv[])
  4. {
  5.     QApplication a(argc, argv);
  6.     stt3 w;
  7.     w.show();
  8.     return a.exec();
  9. }


stt3.cpp里面构造函数的第一行ui->setupUi(this)后面的几行是 我加进去的(自动生成的stt3.cpp只有这一行):
  1. #include "stt3.h"
  2. #include "ui_stt3.h"
  3. stt3::stt3(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::stt3)
  6. {
  7.     ui->setupUi(this);
  8.     QGraphicsScene scene();
  9.     scene.addText("Hello, world!");
  10.     ui->graphicsView->setScene(&scene);
  11.     ui->graphicsView->show();
  12. }
  13. stt3::~stt3()
  14. {
  15.     delete ui;
  16. }


这样的程序编译可以通过,但运行时却不能显示hello world,
请教问题出在哪里?谢谢!
离线dbzhang800

只看该作者 1楼 发表于: 2011-04-03
就因为你构造函数中的这行代码!!
QGraphicsScene scene();

构造完成之日 就是 你这个 scene 析构之时。还没显示呢,都已经销毁了,你怎么能看得到呢
离线omss

只看该作者 2楼 发表于: 2011-04-03
谢谢楼上,确实是这个问题!!
离线flc45
只看该作者 3楼 发表于: 2011-08-09
构造完成之日 就是 你这个 scene 析构之时。
离线slf0205

只看该作者 4楼 发表于: 2011-09-30
在main()中, 加进去就可以了
快速回复
限100 字节
 
上一个 下一个