• 4887阅读
  • 3回复

[提问]从网上找了段代码编译,程序却是先有CONSOLE后有GUI [复制链接]

上一主题 下一主题
离线wter27
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-26
这个是什么原因啊?
  1. #include "browserapplication.h"
  2. #ifdef Q_OS_WIN
  3. #include "explorerstyle.h"
  4. #endif
  5. int main(int argc, char **argv)
  6. {
  7.     Q_INIT_RESOURCE(htmls);
  8.     Q_INIT_RESOURCE(data);
  9. #ifdef Q_WS_X11
  10.     QApplication::setGraphicsSystem(QString::fromLatin1("raster"));
  11. #endif
  12.     BrowserApplication application(argc, argv);
  13.     if (!application.isRunning())
  14.         return 0;
  15. #ifdef Q_OS_WIN
  16.     application.setStyle(new ExplorerStyle);
  17. #endif
  18.     application.newMainWindow();
  19.     return application.exec();
  20. }

上面是main.cpp的代码,为什么不是直接调用GUI,而是先有 了CONSOLE后才出现了GUI界面,这个应该从什么地方修改啊?是在PRO里面么
离线dbzhang800

只看该作者 1楼 发表于: 2011-05-26
这个一个很简单的问题,但是我发现想说透彻似乎还真不太容易(因为不清楚你了解哪些,不了解哪些)

http://blog.csdn.net/dbzhang800/archive/2011/04/24/6358996.aspx

离线wter27
只看该作者 2楼 发表于: 2011-05-26
回 1楼(dbzhang800) 的帖子
谢谢你的回复,不过看到PRO文件里写的DEBUG CONSOLE就明白了,文件太多起初都不知道在哪里入手。
离线tshirtmanid
只看该作者 3楼 发表于: 2011-05-27
en .应该是PRO里。

如果是Windows系统,有子系统的概念。可执行文件exe的PE格式头部中的IMAGE_OPTIONA_HEADER中有个字段表示是使用cui(console)子系统还是gui子系统,如果是console子系统,则会弹出一个控制台来,如果你的程序是个gui程序,但是PE头部的子系统指明了使用console子系统,就会出现又有gui程序,又有控制台的情况。

很多windows上的开发者利用这个特点来在gui的程序里调用printf打印调试日志到这个console控制台界面上来进行调试。
快速回复
限100 字节
 
上一个 下一个