为什么我的C ++ / Qt程序没有做任何事情?

时间:2012-01-19 16:48:54

标签: c++ qt qt-creator

我在Qt Creator中编写了这个程序,但我不确定如何运行它。这是我的代码:

#include <QtCore/QCoreApplication>
using namespace std;
#include <iostream>

int main(int argc, char *argv[])
{ 
   QCoreApplication a(argc, argv);

   string str;
   cin >> str;
   cout << " str is : " << str;
   return a.exec();
}

当我运行它时,我的控制台会显示:

Starting /home/hamed/qt programs/test3-build-desktop/test3...

......没有任何反应。我该怎么办?

3 个答案:

答案 0 :(得分:3)

当复制粘贴你的代码时,它按预期运行(好吧,它不会终止,但会运行)。这是我在命令行中所做的:

cd testproject
qmake -project
qmake
make
./testproject

正如上面的评论中所提到的,Qt本身就是一个库,所以当你说“从Qt内部”运行它时,你可能指的是某些IDE - 这种行为完全取决于你正在使用的IDE。

<强>更新

来自您的留言

Starting /home/hamed/qt programs/test3-build-desktop/test3...

我假设您使用的是QtCreator IDE,它不允许您在运行时输入控制台。我不知道你是否可以这样做,但是如果你在控制台中输入你的项目目录并使用./projectname它就可以了。上面提到的建筑部分将由QtCreator处理。

另一次更新:

查看this thread,了解如何直接从QtCreator开始工作。

答案 1 :(得分:2)

  没有任何反应!!

你的程序正在期待输入,正如你在这里写的那样:

cin >> str;
  

我该怎么办?

只需输入内容并按输入

答案 2 :(得分:2)

QTimer::singleShot(0, &a, SLOT(quit()));行之前添加return a.exec();并且不要忘记#include <QtCore/QTimer>(或者您可以让生活更轻松并导入所有内容#include <QtCore>)。

a.exec()进入等待事件的事件循环;通常以具有图形用户界面的用户输入的形式。然而,这是一个命令行程序,并没有真正的方法让用户发送一个事件,因此它坐着并永远等待。这对于服务器类型的应用程序很有用,但不适用于您在此处执行的操作。 :)

(注意,这是您的应用程序似乎什么都不做的众多原因之一。您可能需要在程序执行预期之前遵循其中的几个答案)