私のQTアプリケーションでは、ターミナルからアプリケーションを実行すると、リアルタイムの情報がターミナルに出力されるようにしたいと考えています。
printf("print this") を使用すると (メインまたはペイント イベント中に)、GUI を閉じるまで印刷されません。
これはなぜですか?どうすれば情報をリアルタイムで印刷できますか? (私はLinuxを使用しています)
ありがとう!
stdout に書き込むには、これCONFIG += console
をプロジェクト ファイルの構成に追加し、必要に応じて を使用する必要cout
がありprintf
ます。qDebug
デフォルトでは に出力されますstderr
。詳細については、このトピックを確認してください - Qt を使用しているときにコンソールに出力する方法
qDebug() << ...
、などを使用できます。qWarning() << ...
忘れずに を含めてください<QDebug>
。
ドキュメント: QDebug
Qt は printf 出力に干渉しません。(Windows では (Qt ではなく) qmake で実行できますが、Linux には適用されません)。ただし、stdout のバッファリング動作によりprintf("print this")
、バッファがフラッシュされるまで出力されないことに注意してください。eg を試すfflush(stdout)
か、単に newline:printf("print this\n")
を追加して、バッファをフラッシュします。ただし、それはQtとはまったく関係ありません。