Qt6.2.4 qDebug() 输出到控件

参考

环境

环境 版本
windows 10
Qt 6.2.4
Qt Creator 8.0.1 (Community)
qmake

一句话总结

通过给 qInstallMessageHandler() 传入一个方法(main.cpp)或静态方法(控件中) 将 qDebug() 内容输出到窗口。其中静态方法需要解决的问题是获取控件实例,通过在类构造函数中给静态属性赋值的方式。

代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "configtool.h"
#include "loadwamp.h"
#include "servicetool.h"

#include <QMainWindow>
#include <QSystemTrayIcon>
#include <QCloseEvent>
#include <QList>
#include <QFileInfo>
#include <QComboBox>
#include <QString>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    static void appendLogToEdit(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>
#include <QString>
#include <QUrl>
#include <QDesktopServices>
#include <QMainWindow>
#include <QSystemTrayIcon>
#include <QIcon>
#include <QMenu>
#include <QAction>
#include <loadwamp.h>
#include <QFileInfo>
#include <QList>
#include <configtool.h>
#include <QComboBox>
#include <QProcess>

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 静态属性赋值
    MainWindow::mainWindow = this;
    // 注册日志方法
    qInstallMessageHandler(appendLogToEdit);
//    qInstallMessageHandler([&](QtMsgType type, const QMessageLogContext &context, const QString &msg) -> void {
//        ui->showLogEdit->append(msg);
//    });
}

/**
 * @brief MainWindow::appendLogToEdit
 * @param rowLog
 * 追加显示日志到 edit中
 */
void MainWindow::appendLogToEdit(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    if(MainWindow::mainWindow != NULL){
        MainWindow::mainWindow->ui->showLogEdit->append(msg);
    }
}


posted @ 2022-09-25 22:32  夏秋初  阅读(618)  评论(0编辑  收藏  举报