」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在QT中重定向QDebug,Qwarning和QCritical輸出?

如何在QT中重定向QDebug,Qwarning和QCritical輸出?

發佈於2025-03-07
瀏覽:674

How can I redirect QDebug, QWarning, and QCritical output in Qt? 
在qt中重定向,調試信息通常使用qdebug()和其他類似的語句印刷到控制台上。將該輸出重定向到文件可能很有用,尤其是對於跨平台開發。這避免了使用Shell腳本並提供了更一致的解決方案。

自定義消息處理程序

重定向debug輸出,QT提供了QinstallMessageHandler()函數。這使您可以安裝一個自定義消息處理程序,該消息處理程序在打印消息之前對其進行處理。這是一個示例處理程序:

void myMessageOutput(qtmsgtype type,const qmessagelogcontext&context&context,const qString&msg) { qbyTearray localmsg = msg.tolocal8bit(); 開關(類型){ case qtdebugmsg: fprintf(stderr,“ debug:%s:%s:%u,%s)\ n”,localmsg.constdata(),context.file,context.file,context.line,context.faction.function); 休息; 案例qtinfomsg: // ... 案例qtwarningmsg: // ... 病例QTCriticalMSG: // ... case qtfatalmsg: fprintf(stderr,“致命:%s:%s:%u,%s)\ n”,localmsg.constdata(),context.file,context.line,line,context.faction.function); aprot(); } }

此處理程序將消息輸出到stderr,但是您可以用文件流替換stderr來重定向輸出。

在您的MAIN中call qinstallMessageHandler()安裝自定義處理程序,函數:

qinstallMessageHandler(myMessageOutput);

一旦安裝,所有qdebug和類似的消息都將重定向到處理程序,並將其寫入文件,並寫入您指定的文件或流。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3