实时获取程序中qt所输出的信息,并显示到QTextBrowser上。
1.在main文件中添加以下内容
//xx为你的界面类名
xx *clk = NULL; void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { // 加锁 QString message; switch (type) { case QtDebugMsg: message = QString("Debug:"); break; case QtWarningMsg: message = QString("Warning:"); break; case QtCriticalMsg: message = QString("Critical:"); break; case QtFatalMsg: message = QString("Fatal:"); break; } // 设置输出信息格式 //QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"); //QString strMessage = QString::fromLocal8Bit("%1").arg(localMsg.constData()); message.append(msg); clk->showMsg(message);//通过调用showMsg()来显示输出内容 QFile file("log.txt");//输出到log.txt文件中 file.open(QIODevice::ReadWrite | QIODevice::Append); QTextStream stream(&file); stream << message << "\r\n"; file.flush(); file.close(); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); xx w; clk = &w; qInstallMessageHandler(myMessageOutput); w.show(); return a.exec(); }2.在自己的界面类中实现void showMsg(QString msg);函数
void xx::showMsg(QString msg) { ui->browser->append(msg); }这样就成功了。