使用qDebug收集用户输入

时间:2014-10-12 09:08:24

标签: c++ qt qdebug

我一直想知道是否可以使用Qt C ++中的qDebug()语句收集用户输入。

我试过像std C ++代码那样:

qDebug() >> myvar;

但它没有用。

如何使用Qt从stdin阅读?

4 个答案:

答案 0 :(得分:7)

qDebug用于输出stderr。如果您想使用Qt从stdin阅读,请使用QTextStream

#include <stdio.h>

QTextStream in(stdin);

QString line;
in >> line;

答案 1 :(得分:2)

不,这是不可能的。 qDebug仅提供用于调试信息的输出流。

答案 2 :(得分:2)

由于您想使用 QDebug ,我认为输入可能是出于调试目的。在这种情况下,如果它是GUI应用程序,您可以考虑使用QInputDialog启动模式对话框来获取输入。它有一堆静态方便的方法,但作为一个例子,要获得一个字符串,你可以这样做:

qDebug() << "before debug input dialog";
QString debugText = QInputDialog::getText(NULL, "Input debug text", "Your input:");
qDebug() << "got text" << debugText;

与此不同,只是从 stdin 读取,这不会阻止整个事件循环(它将以通常的模态对话方式禁用GUI)。相反,从 stdin 的简单读取将阻止整个事件循环。这在调试情况下是无关紧要的,或者如果您特别想要一个或另一个,则取决于事件循环中发生的其他事情(例如,网络内容)。但是,如果您将 stdin 用于其他目的,那么这个对话技巧可以非常方便。

答案 3 :(得分:0)

qDebug和朋友将文字写入适当的位置。这可以是stderr,但它也可以是系统日志。因此,qDebug写入的所有位置都不支持用户输入。但即使他们愿意:Qt如何确定用户输入是应该转到qDebugqWarning还是其中一个?这是不可能的。