鸠摩智118 2023-05-29 19:35 采纳率: 0%
浏览 219
已结题

Qt 在应用程序里总是有[PREVIEW] recv window msg, name:(Qt5QWindowIcon) hwd:(287097a)等信息不断输出,怎么解决

Qt 随意建一个空的widget窗口界面,在调试运行时,只要拖动窗口总是在应用程序输出如下信息

img


[PREVIEW] recv window msg, name:(Qt5QWindowIcon) hwd:(287097a) isvisiable(1) istopwnd(1) isTool(0) isPreview(0) pid:(19192)
[Hook] detach 19192, C:\Users\118ai\Desktop\zhongdian44_new_camera\zhongdian44_new_camera\build-zhongdian44_new_camera-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug\debug\zhongdian44_new_camera.exe
很烦人
有办法把这个信息给关闭掉,不让它在应用程序输出吗

  • 写回答

4条回答 默认 最新

  • 瞬间动力 2023-05-29 19:49
    关注

    这是Qt的调试输出信息,可以通过设置qInstallMessageHandler以自定义消息处理程序来关闭或重定向这些输出。

    例如,可以在main.cpp中设置一个简单的消息处理程序来禁用Qt的默认消息输出:

    #include <QtCore/QDebug>
    
    void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
       //自定义消息处理代码
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        qInstallMessageHandler(customMessageHandler); // 安装自定义消息处理程序
    
        //...
    
        return a.exec();
    }
    

    在消息处理程序的函数中,可以使用自定义代码对所有输出进行处理。要禁用Qt的所有消息输出,可以将自定义消息处理程序设置为无操作,如下所示:

    #include <QtCore/QDebug>
    
    void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
    {
       //TODO: 什么都不做
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        qInstallMessageHandler(customMessageHandler); // 安装自定义消息处理程序
    
        //...
    
        return a.exec();
    }
    

    这样就可以禁用Qt的所有消息输出了。注意,这会阻止标准输出和标准错误流中的所有消息,包括程序中可能需要的其他错误消息。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月5日
  • 赞助了问题酬金15元 6月1日
  • 创建了问题 5月29日