QTで標準出力に表示する方法

QTでGUIアプリケーションを作るときはqDebugなどがログ出力に使われています。

GUIならそれで充分ですが、GUIを持たないCUIアプリケーションを作るときは標準出力に出力結果を表示したいという場合があります。

例えばあるコマンドプログラムを作って、その-hオプションで画面に使い方を表示するなどしたいときです。

そういうときは初めにプロジェクトファイルのCONFIGオプションに次のオプションを加えます。

CONFIG   += console

これでコンソール画面に出力できるようにはなります。

なぜかstd::coutを使って標準出力することはできないみたいなので、printffprintfを使った方が良いみたいです。

ただ、fprintfなどに直接文字列を渡すのは問題ないようですが、次のようにQString型の引数を持たせようとするとちょっと問題があります。

QString message = "Hello World!";
fprintf(stdout, message.constData());

QStringからconstData関数でchar配列に変換すると表示したときに文字化けすることがあります。

なので、表示できる形式に変換するにはqPrintableマクロを使うといいです。

QString message = "Hello World!";
fprintf(stdout, qPrintable(message));

このマクロは次の処理と同じです。

message.toLocal8Bit().toConstData()

以上、標準出力に表示する方法でした。では、また!

関連項目
プライバシーポリシー