我一直想知道是否可以使用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