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 2024-06-05 14:59  不回本不改名  阅读(119)  评论(0编辑  收藏  举报

导航