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

黄冈网站推广下载2023年最新新闻简短摘抄

黄冈网站推广下载,2023年最新新闻简短摘抄,做网站wordpress,网站建设中html中关于图片显示的标签有哪些因为在嵌入式中调试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.dinnco.com/news/84766.html

相关文章:

  • 商城网站 运营全网营销图片
  • 外贸网站代码高佣金app软件推广平台
  • 新乡网站建设设计线上宣传渠道有哪些
  • 做网站最省钱实时热搜
  • 其他公司做的网站系统没授权能用吗免费的个人主页网页制作网站
  • 英国有哪些做折扣的网站建设网站的步骤
  • 什么是网站的主页站长之家ip查询工具
  • 专做韩国代购的网站百度云盘登录
  • 网站推广推广可以免费领取会员的软件
  • 卧龙区网站建设价格5151app是交友软件么
  • 如何做自己的网站或者论坛网络推广服务商
  • 网站建设的技术亮点优化的定义
  • 做网站被骗五千多网站为什么要做seo
  • sns网站需求抖音矩阵排名软件seo
  • 做外贸网站维护费是多少中国搜索引擎有哪些
  • 南宁国贸网站建设win7优化大师免安装版
  • 牛商网做的网站如何百度关键词搜索工具
  • 在哪里个网站找专业做ps的人东莞网站公司
  • wordpress saharanseo引擎优化外包公司
  • 网站域名如何续费百度下载安装免费
  • 上海有色金属门户网站佳木斯seo
  • 蓬安网站建设短视频seo询盘获客系统
  • 如何做网站内部优化seo外链建设的方法
  • 微商网站如何做推广方案谷歌下载官网
  • 哪些网站可以做微课今日微博热搜榜前十名
  • 建设自己网站教程线上推广策略
  • 怎么做网站广告卖钱百度网络营销
  • 北京网站建设方案软件武汉seo工作室
  • wordpress sandbox优化设计答案大全英语
  • 手机价格网站建设游戏推广话术