作者adrianshum (Alien)
看板C_and_CPP
标题Re: [问题] Qt 绘图疑问
时间Wed Aug 12 17:54:36 2009
※ 引述《xyz888x (ㄚ祥)》之铭言:
: 最後测试後成功了=.=a
: QGraphicsScene *scene;
: scene = new QGraphicsScene(QRect(100,100,100,100));
: scene->addText("Hello, world!");
: scene->addLine(100,100,300,300);
: graphicsView->setScene(scene);
: 我把QGraphicsScene改宣告成指标形态,就可以显示了!!!
: 不知道是啥原因=.=这样以後,我怎麽知道要宣告成指标还是普通变数!!
: 烦请各位大大指教一下!!!
我不懂 QT
单看你的程式, 之前不行大概是因为你的 scene
是放在做 painting的 event handler method 内.
method 一完它的 lifetime 也完了. 之後当程式
真的拿你的 scene 来用, 没当掉就算幸运了吧...
第二次做, 是由 heap allocate, 後来程式要拿
来工作, object 还在, 可是要是 graphicsView
不帮你 delete scene 的 instance 的话, 你的
程式应该是会疯狂 memory leak 的
一般这类情况, 都是会放在一个对应的 lifetime
的地方生成 scene, 然後把那个 scene 传进去吧.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
1F:推 Cloud:嗯嗯...有可能~~ 另外QT会帮忙处理new 08/12 18:39
2F:→ adrianshum:所谓会处理的程度是怎样? 这里看来有点危险 08/12 19:04
3F:→ xyz888x:看来我这样的作法太危险了=.=可以把解决方式,再详细 08/12 19:45
4F:→ xyz888x:一点的说明吗,谢谢!!! 08/12 19:46
5F:→ xyz888x:我实在是太弱了=.=" 08/12 19:52
6F:推 guest0079:你的论点没错,不过Qt会自已动点手脚,有时自已delete 08/12 20:02
7F:→ guest0079:反而会出现问题,总之要看文件或自已试看看 08/12 20:04
8F:→ adrianshum:重点还是要看文件了 :) 08/12 20:16
9F:→ xyz888x:文件中,他所给的范例,并不是宣告成指标型态!! 08/12 20:31
10F:→ clanguage:QT会帮忙 garbage collection 吧 08/12 21:32
11F:→ adrianshum:qt应该不可能做 gc 吧,最多是搞搞 auto ptr,ref count 08/13 00:26
12F:→ adrianshum:之类,但单看这里的用法猜它的 api, 又不像是那两种 08/13 00:27
13F:推 abchu:Qt的作法是当parent(Gui的parent)被删除的时候,所有底下的 08/15 12:42
14F:→ abchu:都会一起被删除,我想理论上setScene的动作应该有setParent 08/15 12:43
15F:→ abchu:在Qt中你只要保证你的物件都有连结在一起,最上层的物件的 08/15 12:43
16F:→ abchu:记忆体又有记得删除的话应该就不会有问题 08/15 12:44