解决嵌入式QT程序关闭窗口后进程不结束问题
2017-12-06 09:34
1741 查看
在海思3536芯片上用QT4.8.6开发界面。GUI程序是一个窗体,在终端里用命令行启动,指令形如xxxx -qws,然后点击小叉关闭窗体,窗体消失,但终端里的命令行指令并不返回,用ps查看发现进程没有退出。而相同的代码使用pc上的qt库编译,在pc上是可以正常关闭的,因此推测这个问题与qws相关。通过对main函数的调试发现,进程不结束是卡在了QApplication的析构函数里。这个程序的工程是用Qt Creator创建的,默认的main函数如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
这里面QApplication的实例是声明为局部变量的,要在main函数释放堆栈时析构,怀疑卡死的原因在于一些qws相关资源的释放顺序有问题。因此我改用动态分配的方式产生QApplication实例,修改代码如下:
int main(int argc, char *argv[])
{
QApplication *p = QApplication(argc, argv);
if(!p)
{
return -1;
}
MainWindow w;
w.show();
int ret;
ret = p->exec();
delete p;
return ret;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
这里面QApplication的实例是声明为局部变量的,要在main函数释放堆栈时析构,怀疑卡死的原因在于一些qws相关资源的释放顺序有问题。因此我改用动态分配的方式产生QApplication实例,修改代码如下:
int main(int argc, char *argv[])
{
QApplication *p = QApplication(argc, argv);
if(!p)
{
return -1;
}
MainWindow w;
w.show();
int ret;
ret = p->exec();
delete p;
return ret;
}
相关文章推荐
- 关于VTK+QT在关闭程序后进程无法结束的问题
- Android 下Qt 多层窗口关闭时程序退出的问题 解决
- Qt程序聊天弹屏问题简单解决方法(类似QQ聊天聊天窗口弹屏)
- QT 编译通过但是运行出现程序异常结束或者crashed的问题 在QT creator中最佳解决办法
- C#窗体程序,当窗口关闭后,进程无法关闭解决方法
- QT中使用槽函数来关闭窗口,导致内存泄露的问题以及解决办法
- c#项目关闭窗口却不能关闭进程问题的解决
- C++ IDE 运行程序时,程序运行结束窗口自动关闭的问题
- linux 关闭窗口后 进程结束 解决办法
- C#窗口中创建了线程,关闭窗口,进程无法结束的问题
- Dev-C++ IDE 运行程序时,程序运行结束窗口自动关闭的问题
- QT 窗口关闭 程序进程不退出
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- 在IE7关闭窗口,上传图片无法预览,window.status无效问题解决办法
- QT 中关闭窗口后 进程仍然存在
- 关于VB6.0写的软件,程序已经关闭了,但在任务管理器中进程还存在的怪现象的解决办法
- 请求帮助:如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- 解决载入(打开)加壳程序后,OD关闭退出的问题
- 关于VB6.0写的软件,程序已经关闭了,但在任务管理器中进程还存在的怪现象的解决办法
- 在线人数统计,解决了关闭浏览器窗口,释放session的问题