Qt学习笔记(五)重定向

实时获取程序中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);
}
这样就成功了。


猜你喜欢

转载自blog.csdn.net/xuxunjie147/article/details/79230015