2014-10-12 112 views
2

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

我试图为标准C做这样++代码,如:

qDebug() >> myvar; 

,但没有奏效。

如何使用Qt从stdin中读取?

回答

7

qDebug用于输出到stderr。如果你想从使用Qt stdin阅读,你应该使用QTextStream

#include <stdio.h> 

QTextStream in(stdin); 

QString line; 
in >> line; 
2

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

0

qDebug和朋友写的文字到合适的位置。这可以是stderr,但它也可以是系统日志。因此,并非所有qDebug写入的位置甚至都支持用户输入。但即使他们会这样做:Qt如何确定用户输入应该是qDebug,qWarning还是其他人之一?这是不可能的。

2

由于您想使用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用于其他目的,则此对话框技巧可以非常方便。

+0

谢谢你,我想给你一个大拇指,但没有足够的代表,但谢谢。 – user2989328 2014-10-13 13:04:50