我一直想知道是否可以使用Qt C ++中的qDebug()
语句收集用户输入。
我试过像std C ++代码那样:
qDebug() >> myvar;
但它没有用。
如何使用Qt从stdin
阅读?
答案 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如何确定用户输入是应该转到qDebug
,qWarning
还是其中一个?这是不可能的。