2014-10-12 39 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