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);
}
}