한국어
Qt
 

메시지 핸들러는 디버그 메시지, 경고, 치명적인 오류 메시지를 한곳에 모아 출력하게하는 기능이다. 자신의 메시지 처리기를(C++표준 출력이나 기타 디버거로 출력하도록) 구현하면 응용프로그램 전체 디버그 출력을 완벽하게 제어 할 수 있다. 이것은 로그메세지 출력을 파일 또는 다른 서브시스템으로 리다이렉션(Redirection) 할 수 있음을 의미한다.

 

다음은 예제 소스코드이다. (Qml의 디버스 메세지도 이곳에서 출력된다.)

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

void logOutputHandler(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:
        fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtWarningMsg:
        fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtCriticalMsg:
        fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        abort();
    }
    fflush(stderr);
}

int main(int argc, char *argv[])
{
    qInstallMessageHandler(logOutputHandler); // 메세지 핸들러 등록

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

 

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 87689
119 안드로이드 가상장치 사용 file makersweb 2019.01.13 1182
118 QMake 프로젝트를 CMake 프로젝트로 변환 with qmake2cmake makersweb 2022.09.17 1189
117 Qml에서 커튼효과 구현 예제 - Shader Effects file 운영자 2018.12.05 1212
116 QProcess 예제 (프로그램 재시작) file makersweb 2023.01.25 1234
115 Qt 6의 비동기 API makersweb 2020.10.19 1314
114 많은 리소스를 사용하는 Qt프로젝트에서 고려해봐야 할 qmake 옵션 makersweb 2019.10.11 1318
113 Qt 하이브리드 애플리케이션(Hybrid App) 개발 file makersweb 2023.02.08 1327
112 재진입(Reentrancy) 및 스레드 안전성(Thread-Safety) makersweb 2020.04.19 1351
111 Qt 스마트 포인터 (QSharedPointer, QScopedPointer, QPointer) makersweb 2022.08.18 1364
110 웹기반 Qt Design Viewer [2] file makersweb 2019.10.23 1397
109 tslib의 ts_calibrate를 응용해서 Qt로 터치보정기능 구현 file makersweb 2019.04.06 1462
» qInstallMessageHandler를 이용한 디버그 메세지 출력 제어하기 makersweb 2019.02.25 1471
107 QThread 및 QMutex 예제 makersweb 2021.01.12 1478
106 Qbs에 대한 소개와 설치하는 방법 makersweb 2019.10.09 1486
105 싱글터치 스크린 및 임베디드 리눅스 기반에서 Qt 터치입력 makersweb 2018.12.24 1513
104 QML과 JavaScript 의 숫자 관련 내장된 함수 makersweb 2021.03.28 1559
103 Qt Quick 3D 소개 makersweb 2019.11.09 1583
102 QML에서 undefined를 확인하는 방법 makersweb 2017.11.29 1605
101 ApplicationWindow 와 메뉴바(MenuBar)구성 file makersweb 2020.01.04 1616
100 Widgets(C++) 기반의 기본 스타일을 Dark 테마 및 Material 디자인 스타일로 바꾸기 file makersweb 2023.01.28 1632