"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إعادة توجيه QDebug ، Qwarning ، والإخراج qcritical في QT؟

كيف يمكنني إعادة توجيه QDebug ، Qwarning ، والإخراج qcritical في QT؟

نشر في 2025-03-07
تصفح:732

How can I redirect QDebug, QWarning, and QCritical output in Qt?

إعادة توجيه qdebug ، Qwarning ، والإخراج qcritical

في QT ، غالبًا ما تتم طباعة معلومات التصحيح إلى وحدة التحكم باستخدام qdebug () وغيرها من العبارات المماثلة. قد يكون من المفيد إعادة توجيه هذا الإخراج إلى ملف بدلاً من ذلك ، خاصةً لتطوير المنصات المتقاطعة. هذا يتجنب استخدام البرامج النصية Shell ويوفر حلًا أكثر اتساقًا.

معالج رسالة مخصصة

لإعادة توجيه تصحيح الإخراج ، يوفر QT وظيفة QinstallMessageHandler (). يتيح لك ذلك تثبيت معالج رسالة مخصص يعالج الرسائل قبل طباعتها. إليك مثال معالج:

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    switch (type) {
    case QtDebugMsg:
        fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtInfoMsg:
        // ...
    case QtWarningMsg:
        // ...
    case QtCriticalMsg:
        // ...
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        abort();
    }
}
يقوم هذا المعالج بإخراج الرسائل إلى stderr ، ولكن يمكنك استبدال Stderr مع دفق ملف لإعادة توجيه الإخراج.

الوظيفة:

QinstallMessageHandler (mymessageoutput) ؛

بمجرد تثبيت QDEBUG ورسائل مماثلة سيتم إعادة توجيهها إلى المعالج والمكتوبة إلى الملف الذي حددته.
            
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3