我一直想知道是否可以使用Qt C++中的qDebug()
语句来收集用户输入。使用qDebug收集用户输入
我试图为标准C做这样++代码,如:
qDebug() >> myvar;
,但没有奏效。
如何使用Qt从stdin
中读取?
我一直想知道是否可以使用Qt C++中的qDebug()
语句来收集用户输入。使用qDebug收集用户输入
我试图为标准C做这样++代码,如:
qDebug() >> myvar;
,但没有奏效。
如何使用Qt从stdin
中读取?
qDebug
用于输出到stderr
。如果你想从使用Qt stdin
阅读,你应该使用QTextStream
:
#include <stdio.h>
QTextStream in(stdin);
QString line;
in >> line;
不,这是不可能的。 qDebug仅提供用于调试信息的输出流。
qDebug
和朋友写的文字到合适的位置。这可以是stderr,但它也可以是系统日志。因此,并非所有qDebug
写入的位置甚至都支持用户输入。但即使他们会这样做:Qt如何确定用户输入应该是qDebug
,qWarning
还是其他人之一?这是不可能的。
由于您想使用QDebug,我认为输入可能是出于调试目的。在这种情况下,如果它是GUI应用程序,则可以考虑使用QInputDialog来启动模式对话框以获取输入。它有一堆的静态便捷方法,但作为一个例子,得到一个字符串,你可以这样做:
qDebug() << "before debug input dialog";
QString debugText = QInputDialog::getText(NULL, "Input debug text", "Your input:");
qDebug() << "got text" << debugText;
与此差异,简单地从标准输入是阅读,这不会阻止整个事件循环(它将以通常的模式对话方式禁用GUI)。相反,从stdin的简单读取将阻止整个事件循环。这在调试情况中是无关紧要的,或者如果你特别需要其中一个,取决于事件循环中发生的其他事情(如网络事件)。但是,如果您使用stdin用于其他目的,则此对话框技巧可以非常方便。
谢谢你,我想给你一个大拇指,但没有足够的代表,但谢谢。 – user2989328 2014-10-13 13:04:50