• 9886阅读
  • 4回复

Qt 程序跳出cmd窗口 [复制链接]

上一主题 下一主题
离线hicjiajia
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-17
  今天写了一个进度条的实例,但是在运行的时候,先弹出cmd窗口,然后再是程序,关闭cmd窗口后程序自动退出,我看过了我的pro文件,其中并没有 CONFIG+=console 语句,一时也不知道是怎没个情况,请高手们指点...






离线hicjiajia

只看该作者 1楼 发表于: 2010-07-17
我自己找到问题所在了,这个进度条实例模拟文件的复制过程,其中我有用到qSleep()函数进行延时,
所以我在pro文件中加入了   CONFIG +=qtestlib ,然后在cpp文件中include <QTest> ,用来使用里面的qSleep()函数进行延时,
我注释掉这些新加入的东东后,cmd窗口消失....
我在网上也看到了和我一样情况的问题,但是原因不一样,也不知道他们出现cmd窗口是什么原因
离线dbzhang800

只看该作者 2楼 发表于: 2010-07-17
引用第1楼hicjiajia于2010-07-17 16:37发表的  :
我自己找到问题所在了,这个进度条实例模拟文件的复制过程,其中我有用到qSleep()函数进行延时,
所以我在pro文件中加入了   CONFIG +=qtestlib ,然后在cpp文件中include <QTest> ,用来使用里面的qSleep()函数进行延时,
我注释掉这些新加入的东东后,cmd窗口消失....
我在网上也看到了和我一样情况的问题,但是原因不一样,也不知道他们出现cmd窗口是什么原因


启用 qtestlib 强制弹出 cmd 是很有必要,也很容易理解的:包含该模块就是在做程序测试,而测试的中间输出要靠 cmd 来显示。

你提到的情况,不应该用 qtestlib 这个模块,也不应该用其他 sleep 形式,最好还是用 QTimer 吧
离线dbzhang800

只看该作者 3楼 发表于: 2010-07-17
引用第1楼hicjiajia于2010-07-17 16:37发表的  :
我自己找到问题所在了,这个进度条实例模拟文件的复制过程,其中我有用到qSleep()函数进行延时,
所以我在pro文件中加入了   CONFIG +=qtestlib ,然后在cpp文件中include <QTest> ,用来使用里面的qSleep()函数进行延时,
我注释掉这些新加入的东东后,cmd窗口消失....
我在网上也看到了和我一样情况的问题,但是原因不一样,也不知道他们出现cmd窗口是什么原因


前面说了最好不要这么用,如果你非要这么用,一个简单的解决方法是 修改其生成的 makefile 文件的链接选项:

如果你用的 mingw,那么

将其中的:

  1. -Wl,-subsystem,console

修改为
  1. -Wl,-subsystem,windows

重新编译即可


如果你的VS2008等编译器,那么

将其中的:

  1. /SUBSYSTEM:CONSOLE

修改为
  1. /SUBSYSTEM:WINDOWS /entry:mainCRTStartup

即可

对链接子系统的一个简单讨论,可以看看这个:
http://hi.baidu.com/cyclone/blog/item/96624a90fb4ca081a977a4db.html
离线yj_yulin

只看该作者 4楼 发表于: 2010-07-18
回 3楼(dbzhang800) 的帖子
呵呵,还真没这么仔细地了解过这个区别,学习了.
快速回复
限100 字节
 
上一个 下一个