• 2849阅读
  • 3回复

改写《C++ GUI Programming with Qt 4》例子,关闭程序有问题,麻烦帮忙看下。 [复制链接]

上一主题 下一主题
离线weiweiqiao
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-03
本书中的原例IconEditor将图片放大显示。我现在将其可通过QAction进行Open、Save、SaveAs和Exit。但是在Exit或点击窗口坐上角退出时,就会有报错信息。我单步跟踪后报告“底层由于接收到操作系统的信号而停止”。不知能否帮我看看我的问题在哪?
源码中iconedit是显示放大后图片的控件(QWidget)。mainiconeditor是QMainWindow,用于显示iconedit控件中的图片。具体源码见附件。
谢谢。
描述:改写IconEditor的例子
附件: CreateCustomWidget.rar (26 K) 下载次数:1
Jobs Insanely Great.
离线bingyifeng

只看该作者 1楼 发表于: 2013-09-03

mainIconEditor的构造函数中,
删除 setAttribute(Qt::WA_DeleteOnClose); 之后OK
应该是这句话和她自己是在栈上构造的冲突了:
设置这句话的时候,window关闭的时候,会进行delete。
在栈上构造的,函数退出的时候,也会析构。
另外,你有些地方指针没有判空

例如bool mainIconEditor::maybeSave() 中的i
也会crash的。
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
离线weiweiqiao

只看该作者 2楼 发表于: 2013-09-04
回 1楼(bingyifeng) 的帖子
哦。
我试了你的改动,还是有问题。我再调调看了。
还有你说的maybeSave方法中的i应该不会crash的。i指针只是保存了主窗口中控件的指针,这个控件指针是前面已经new过的。在这里只是用来判断是否保存过修改后的图片。如果delete的话,那等于是把主窗口中控件给删除了。是吧?
Jobs Insanely Great.
离线bingyifeng

只看该作者 3楼 发表于: 2013-09-04
那个i 不一定被赋值的,比如 进入画面后,直接点 退出 按钮。
<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
快速回复
限100 字节
 
上一个 下一个