QT笔记:重定向qDebug到控件

QT笔记:重定向qDebug到控件

作为log输出的qDebug可以将调试信息打印到调试终端中,但是有时候实际使用将其输出到UI界面也是很有用的,这里记录下如何将qDebug进行控件重定向。测试版本为QT6.6.2

代码

mainwindow.h

//只要能正常编译过qDebug的就行
#include <QMainWindow>


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
    //添加一个控件重定向的槽函数
    static void softwave_log_callback(QtMsgType type, const QMessageLogContext &context, const QString &msg);

private slots:

private:
    Ui::MainWindow *ui;
	//添加一个窗口的静态指针
    static MainWindow *mainWindow;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QCoreApplication>
#include <QDebug>


// 初始化静态属性
MainWindow *MainWindow::mainWindow = NULL;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 静态属性赋值
    MainWindow::mainWindow = this;
    // 注册重定向接口
    qInstallMessageHandler(softwave_log_callback);

}

//重定向接口实现,这里Sorfwave_Log_TextBrowser是其他地方定义的一个文本框控件
void MainWindow::softwave_log_callback(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    // 程序运行log
    if (MainWindow::mainWindow != NULL)
    {
        MainWindow::mainWindow->Sorfwave_Log_TextBrowser->append(msg);
    }
}

posted on   不回本不改名  阅读(168)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示