• 4721阅读
  • 8回复

[提问]QT编程的一个基本问题 [复制链接]

上一主题 下一主题
离线garyv
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-16
有一个arm-linux下基于QT的界面app,代码大致如下:


  1. int main(int argc, char *argv[])
  2. {
  3.     int ret;
  4.     QApplication app(argc, argv);
  5.     ....
  6.    ret = app.exec();
  7.     return exit_func();
  8. }


其中exit_func()是我添加的函数,该函数里面有printf打印代码还有通过open()/close()创建文件的代码,问题是,这个app退出时没有看到exit_func()里面的打印信息,也没有看到该创建的文件,exit_func()里面的代码是顺序执行的,肯定都能执行到。。。请大家指点一下


离线dbzhang800

只看该作者 1楼 发表于: 2011-10-17
看起来,你的main函数内完全可以只保留return那一句。

先确保你这个函数没问题,然后再说吧。
离线garyv
只看该作者 2楼 发表于: 2011-10-17
回 1楼(dbzhang800) 的帖子
你没看到我留了一个省略号吗?我把与这个问题无关的代码都用省略号代替了,而且保证main()函数不会在app.exec()函数前面返回。也许你不是这个意思。
exit_func()函数我也专门测试过是正常的,是用一个与QT无关的类似hello world的app测试的。app.exec()之前加的printf()打印信息是可以看到的,exit_func()最后有fflush(stdout)语句。

离线dbzhang800

只看该作者 3楼 发表于: 2011-10-17
Re:回 1楼(dbzhang800) 的帖子
引用第2楼garyv于2011-10-17 02:00发表的 回 1楼(dbzhang800) 的帖子 :
你没看到我留了一个省略号吗?我把与这个问题无关的代码都用省略号代替了,而且保证main()函数不会在app.exec()函数前面返回。也许你不是这个意思。
exit_func()函数我也专门测试过是正常的,是用一个与QT无关的类似hello world的app测试的。app.exec()之前加的printf()打印信息是可以看到的,exit_func()最后有fflush(stdout)语句。


确实看不太懂你想表达的意思。只能说,如果你的描述属实的话,那么就应该不会发生你说的问题。

不清楚你省略号的含义,还是说,你认为它没有影响,然后贴代码的时候故意省略了,但是实际上你并没有这么测试?
离线garyv
只看该作者 4楼 发表于: 2011-10-17
是你说的那样,我贴代码时故意省略了。如果在main()里面只调用这个函数是没有问题的。

你说的:
"应该不会发生你说的问题"
这一点你确认?你试过吗?
离线dbzhang800

只看该作者 5楼 发表于: 2011-10-17
引用第4楼garyv于2011-10-17 10:31发表的  :
是你说的那样,我贴代码时故意省略了。如果在main()里面只调用这个函数是没有问题的。
你说的:
"应该不会发生你说的问题"
这一点你确认?你试过吗?

这不是你自己说的么?

exit_func()里面的代码是顺序执行的,肯定都能执行到。。。请大家指点一下


离线garyv
只看该作者 6楼 发表于: 2011-10-17
引用第5楼dbzhang800于2011-10-17 10:49发表的  :


我说肯定能执行到,是只单独测试exit_func()的时候。放在QT程序的最后就没有输出了,好像没执行到那个函数一样。
离线oceanljp

只看该作者 7楼 发表于: 2011-10-17
实践是王道啦。
经测试:
如果用的是ctrl+c 或 kill杀死进程,则不会打印。
原因:进程被信号中断,此时程序还在app.exec()中运行,没执行到打印语句,所以不打印。


如果在图形界面中点击图标退出程序,则会打印。
原因:进程正常结束,程序流程从app.exec()退出,执行打印语句,所以打印。

离线toby520

只看该作者 8楼 发表于: 2011-10-17
调试下吧
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个