2010年7月16日 星期五

QT在windows下用qDebug()输出

打開.pro文件,加入一行:

win32:CONFIG += console

然后保存。再重新編譯,就可以看到控制台输出了。

要在主控台螢幕(Windows平台上面叫做「命令提示字元」視窗)上面輸出文字,有三種呼叫方式:其一,加入#include (包含於QtGui表頭檔內,若已加入#include 則可以省略這行)以便使用qDebug() << arg語法,至於qDebug("...", arg)語法則只需加入任何Qt表頭檔即可使用;其二,若想要透過C++的std::cout來輸出,則需要加入#include ;其三,使用C的printf()函式也無妨,並視需要加入#include (所謂的視需要是指如果編譯器有發生錯誤的話才加入)。

針對C的語法,若要將QString的內容轉為 printf()可以接受的字元陣列,需要多呼叫兩層,亦即先用toAscii()轉換、再用constData()取值,所以Qt裡面內建了一個方便的巨集,叫做qPrintable(),協助完成這兩個動作,以免每次都還要努力回想QString轉換成char*的步驟。

但是不管是挑選上述的何種方法來實現在命令列上面的文字輸出,都務必要在.pro專案檔內加入「CONFIG += console」這行敘述,否則無論是qDebug、cout或者printf都將不會顯示結果出來。換言之,在撰寫命令列的主控台應用程式的時候,這行敘述是絕對不可或缺的(除非「qmake -project」指令自己有偵測到該應用程式為主控台類型),否則將無法看到輸出結果,甚至可能還會誤以為是程式邏輯發生了什麼錯誤。

沒有留言:

張貼留言