当前位置: 首页 > news >正文

百色高端网站建设遵义市和城乡建设局网站

百色高端网站建设,遵义市和城乡建设局网站,学校网站建设的意义的主要负责人,修改wordpress的样式因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息 界面如下: 提供了开始,停止,保存,清空,退出功能,具体代码下文给出 文件如下 #ifndef QDEBUGREDIRECT_H #define QDEBUGREDIRECT_H /**qdebug 重定向类 定向到界面控件*李吉磊 2023.12.7* */#in…

因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息

界面如下:

提供了开始,停止,保存,清空,退出功能,具体代码下文给出

文件如下

#ifndef QDEBUGREDIRECT_H
#define QDEBUGREDIRECT_H
/**qdebug  重定向类 定向到界面控件*李吉磊 2023.12.7*
*/#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QTextEdit>
#include <QWidget>
#include <QMutex>class qDebugRedirect : public QObject
{Q_OBJECT
public:qDebugRedirect();void showWidget();    //展示界面void closeWidget();    //关闭界面static void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg);private:void InitWidget();void StartRedirect();     //启动注册void StopRedirect();      //停止注册void Save2File();         //将界面文本内容保存到本地QWidget * m_widget;  //界面QTextEdit * m_Edit;QMutex m_mutex;
};#endif // QDEBUGREDIRECT_H
#include "qdebugredirect.h"
#include <QGridLayout>
#include <QDebug>
#include <QDateTime>
#include <QDir>
qDebugRedirect * g_qDebugRedirect;qDebugRedirect::qDebugRedirect()
{m_widget = nullptr;g_qDebugRedirect = this;//下面两行为在构造该类时启动重定向,后续只要展示出界面即可查看信息InitWidget();StartRedirect();
}void qDebugRedirect::myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{// 加锁g_qDebugRedirect->m_mutex.lock();//信息分类QString strMsg("");QByteArray localMsg = msg.toLocal8Bit();switch(type){case QtDebugMsg:strMsg = QString("Debug:");break;case QtInfoMsg:strMsg = QString("Info:");break;case QtWarningMsg:strMsg = QString("Warning:");break;case QtCriticalMsg:strMsg = QString("Critical:");break;case QtFatalMsg:strMsg = QString("Fatal:");break;default:break;}//文件名、函数名、行数strMsg += QString("Function: %1  File: %2  Line: %3 ").arg(context.function).arg(context.file).arg(context.line);// 时间和内容QString strDateTime = QDateTime::currentDateTime().toString("hh:mm:ss");QString strMessage = QString("%1 %2:%3").arg(strDateTime).arg(strMsg).arg(localMsg.constData());int maxLen = 2*1024*1024;int len = g_qDebugRedirect->m_Edit->toPlainText().length();if(len > maxLen)g_qDebugRedirect->m_Edit->clear();g_qDebugRedirect->m_Edit->append(strMessage);g_qDebugRedirect->m_Edit->moveCursor(QTextCursor::End);// 解锁g_qDebugRedirect->m_mutex.unlock();}void qDebugRedirect::StartRedirect()
{qInstallMessageHandler(myMessageOutput);
}void qDebugRedirect::StopRedirect()
{qInstallMessageHandler(nullptr);
}void qDebugRedirect::InitWidget()
{if(m_widget == nullptr){m_widget = new QWidget();QGridLayout * glay = new QGridLayout();glay->setSpacing(0);glay->setMargin(0);glay->setContentsMargins(0,0,0,0);m_widget->setLayout(glay);QPushButton * pbClose = new QPushButton();  //关闭界面按钮pbClose->setText("close");QObject::connect(pbClose,&QPushButton::clicked,this,[=](){closeWidget();//qDebug() << "close";});glay->addWidget(pbClose,0,8,1,1);QPushButton * pbBegin = new QPushButton();  //开始按钮pbBegin->setText("start");QObject::connect(pbBegin,&QPushButton::clicked,this,[=](){StartRedirect();});glay->addWidget(pbBegin,1,0,1,2);QPushButton * pbEnd = new QPushButton();    //结束按钮pbEnd->setText("stop");QObject::connect(pbEnd,&QPushButton::clicked,this,[=](){StopRedirect();});glay->addWidget(pbEnd,1,2,1,2);QPushButton * pSave = new QPushButton();    //保存按钮pSave->setText("save");QObject::connect(pSave,&QPushButton::clicked,this,[=](){Save2File();});glay->addWidget(pSave,1,4,1,2);QPushButton * pClear = new QPushButton();    //清理按钮pClear->setText("clear");QObject::connect(pClear,&QPushButton::clicked,this,[=](){m_Edit->clear();});glay->addWidget(pClear,1,8,1,1);//展示控件m_Edit = new QTextEdit();glay->addWidget(m_Edit,2,0,6,9);//m_widget->setWindowFlag(Qt::WindowStaysOnTopHint,true);//m_widget->setWindowFlags(Qt::FramelessWindowHint);//m_widget->setWindowModality(Qt::ApplicationModal);m_widget->resize(800,600);}
}void qDebugRedirect::showWidget()    //展示界面
{InitWidget();m_widget->show();
}void qDebugRedirect::closeWidget()    //关闭界面
{if(m_widget){m_widget->close();delete m_widget;m_widget = nullptr;}
}void qDebugRedirect::Save2File()
{//创建log文件夹qDebug() << "currentPath : " << QDir::currentPath();QDir dir("log");if (!dir.exists()){QDir dir;bool b = dir.mkdir("log");qDebug() << "dir.mkdir(\"log\") = "  << b;}//创建log文件QString currentDate = QDateTime::currentDateTime().toString("yyyyMMdd");QString logName = "log" + currentDate + ".txt";QString logFileName = "log/" + logName;//写入文件QFile file(logFileName);if (!file.open(QIODevice::WriteOnly | QIODevice::Append)){qDebug() << "file.open : " << logFileName << "faild";file.close();return ;}qDebug() << "file.open : " << logFileName << "succeed";QTextStream stream(&file);stream << m_Edit->toPlainText() << "\r\n";;file.flush();file.close();
}

使用方法也很简单

先构造

qDebugRedirect * m_widget;

m_widget = new qDebugRedirect();

然后展示界面或关闭界面

m_widget->showWidget();   展示界面

m_widget->closeWidget();  关闭界面

当然了界面自带close 按钮 或者 窗体的x 退出按钮均可退出

http://www.15wanjia.com/news/163225.html

相关文章:

  • 从您的角度来看_对于农产品网站的建设有什么想法或建议呢?常用的网络推广方法有哪些
  • 网站做菠菜微信crm管理系统
  • 做夹具需要知道的几个网站模板网站怎么做卖
  • 建网站需要注意的问题自己在线制作logo免费生成器
  • 成都门户网站建设wordpress引导页
  • 黄金网站软件免费重庆市建设工程信息网安
  • 邢台网站推广费用南山医院网站建设
  • 找人做网站安全吗建网站的公司起什么名好
  • 公司网站有哪些优化营商环境 提升服务效能
  • 大学做视频网站设计连云港做网站哪里好
  • 在线网站建设培训四川互联网广告人
  • 太原seo网站排名做网站 最好的开源cms
  • 百度的网站wordpress新闻快讯插件
  • 有关做美食的网站有哪些泉州网站建设哪里好
  • 可信网站标志个人博客平台
  • 网站建设找天宇智能WordPress安卓APP不能绑定
  • 国际摄影网站青岛做网站建设的公司排名
  • 文广网站建设医药网站建设中图片
  • 如需郑州网站建设网站开发 资质
  • 做公司网站的南宁公司电商网站设计网络服务
  • 杭州网站界面设计wordpress怎么烤别人的
  • 优化排名对网站不好网站开发与管理所对应的职位及岗位
  • 代做网站修改维护灵山建设局网站
  • 重庆网站制作技术龙华营销型网站制作
  • 国家建设协会官方网站产品宣传方式有哪些
  • 网站建设哪家公司wordpress访问
  • 推广网站链接怎么做返利网 网站开发
  • 技校电子商务主要学什么北京网站seo设计
  • 网站怎么做footer国外用tornado做的网站
  • wordpress的主题下载搜索引擎优化的工作原理