使用Windows上的QProcess启动进程错误:“计时器只能用于以QThread启动的线程”

时间:2015-09-28 21:01:56

标签: c++ multithreading qt

我有一个最小的例子,我正努力工作。最终目标是能够将某些信息传递给正在等待“cin”呼叫的程序。我想这意味着与标准输入有关。

我正在尝试使用一些Qt对象来帮助我。虽然我没有使用任何其他Qt的东西。

我正在尝试的示例给出了错误:

#include <iostream>

#include <QtCore/QString>
#include <QtCore/QProcess>
#include <QtCore/QStringList>

int main() {

    QProcess process;
    QString prog = "test.exe";

    // Starting "test.exe":
    process.start(prog);
    bool started = process.waitForStarted();
    std::cout << started << std::endl;

    // test.exe is waiting for cin, so give "2":
    bool response = process.write("2\n");
    std::cout << response << std::endl;
}

以下是错误消息:

1
QObject::startTimer: Timers can only be used with threads started with QThread
1
QProcess: Destroyed while process ("test.exe") is still running.

1 个答案:

答案 0 :(得分:0)

在极少数情况下,您将拥有没有QApplication或QCoreApplication的Qt-app。它们启动事件循环,定时器,事件,信号/插槽所需。

控制台XML解析器可以是这种无事件应用程序。

看一下,例如这里是一个最小的QtCoreApplication应用程序:How do I create a simple Qt console application in C++?

在子类QWidget或QObject中启动您的进程。