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

阿里巴巴网站做方案互站网怎么样

阿里巴巴网站做方案,互站网怎么样,特种作业人员证网上查询,一键制作图片之前没有考虑写日志时采用单独的线程#xff0c;而是将写日志的部分放在了主线程中实现#xff0c;后面发现当程序输出的日志信息过多#xff0c;程序长时间运行后会造成主线程的运行性能降低。故尝试创建一个单独的线程用来写日志。 此程序有一个弊端#xff0c;运行时没有…之前没有考虑写日志时采用单独的线程而是将写日志的部分放在了主线程中实现后面发现当程序输出的日志信息过多程序长时间运行后会造成主线程的运行性能降低。故尝试创建一个单独的线程用来写日志。 此程序有一个弊端运行时没有错误但存在文件没有关闭线程也不清楚结束了没望大神加以指导修改将其完善。 程序的结构如下 运行效果截图 上图是第一个界面密码和用户名为123点击进入后弹出一个对话框点击取消后原本填入的信息会被清除密码验证不通过会弹出提示框。 此项目是基于应用程序的项目以QDialog为基类含有两个ui文件分别为登录窗口和登录成功后显示的窗口登录窗口中在两个输入的行编辑器中进行设置属性plcaeholderText如下图 输入的密码显示框还需再设置属性echoMode和placeholderText属性。 直接上代码 main.cpp #include dialog.h#include QApplicationint main(int argc, char *argv[]) {if (QT_VERSION QT_VERSION_CHECK(5, 6, 0))QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QApplication a(argc, argv);Dialog w;w.show();return a.exec(); } 主程序中添加以下代码 if (QT_VERSION QT_VERSION_CHECK(5, 6, 0))QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);是为了解决在ui界面设计的界面通过预览查看其效果正常但是运行程序时部分部件位置显示不正常的问题在以前的博文中有所记录。 dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialog #include welcomdlg.h #include writelog.hQT_BEGIN_NAMESPACE namespace Ui { class Dialog; } QT_END_NAMESPACEclass Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent nullptr);~Dialog();void checkedLoginInInfo();void outPutLogMsg(QString strInfo,QString strIndex);protected: // void closeEvent(QCloseEvent *event); signals:void signalSendLogMsg(QString strMsg);private slots:void on_enterButton_clicked();void on_cancelButton_clicked();private:Ui::Dialog *ui;WelcomDlg *m_welcomDlg;WriteLog *m_writeLog; }; #endif // DIALOG_H dialog.cpp #include dialog.h #include ui_dialog.h #include QDebug #include QMessageBox #include QDateTimeDialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog) {ui-setupUi(this);m_welcomDlg new WelcomDlg(this);m_writeLog WriteLog::getInstance();connect(this,Dialog::signalSendLogMsg,m_writeLog,WriteLog::slot_receMsg); }Dialog::~Dialog() {delete ui; }void Dialog::checkedLoginInInfo() {QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(开始验证登录信息,str);QString strAccount ui-lineEditAccount-text().trimmed();QString strPassword ui-lineEditPassword-text();QString strMsg 用户名 strAccount 密码 strPassword;QString strInfo QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(strMsg,strInfo);if(strAccount.compare(123) 0 strPassword.compare(123) 0)//大小写敏感的{QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(登录信息正确,str);accept();//隐藏模式对话框m_welcomDlg-show();}else{QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(登录信息输入错误,str);QMessageBox::warning(this,tr(警告),tr(用户名或密码错误请重新输入),QMessageBox::Yes);on_cancelButton_clicked();ui-lineEditAccount-setFocus();} }void Dialog::outPutLogMsg(QString strInfo,QString strIndex) {QString strTime QDateTime::currentDateTime().toString(yyyy-MM-dd: hh:mm:ss);strIndex.prepend(strTime);strIndex.append(strInfo);emit signalSendLogMsg(strIndex); }//void Dialog::closeEvent(QCloseEvent *event) //{ // QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__); // outPutLogMsg(执行关闭事件,str); // Q_UNUSED(event); // m_writeLog-closeFileThread(); //}void Dialog::on_enterButton_clicked() {checkedLoginInInfo(); }void Dialog::on_cancelButton_clicked() {ui-lineEditAccount-clear();//清空之后恢复原来的提示文字ui-lineEditPassword-clear();QString strMsg QString::number(0);strMsg strMsg.prepend(数据被清空为);QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(strMsg,str); } welcomdlg.h #ifndef WELCOMDLG_H #define WELCOMDLG_H#include QDialog #include writelog.hnamespace Ui { class WelcomDlg; }class WelcomDlg : public QDialog {Q_OBJECTpublic:explicit WelcomDlg(QWidget *parent nullptr);~WelcomDlg();void outPutLogMsg(QString strInfo,QString strIndex);signals:void signalSendLogMsg(QString strMsg); private:Ui::WelcomDlg *ui;WriteLog *m_writeLog; };#endif // WELCOMDLG_H welcomdlg.cpp #include welcomdlg.h #include ui_welcomdlg.h #include QDateTimeWelcomDlg::WelcomDlg(QWidget *parent) :QDialog(parent),ui(new Ui::WelcomDlg) {ui-setupUi(this);m_writeLog WriteLog::getInstance();connect(this,WelcomDlg::signalSendLogMsg,m_writeLog,WriteLog::slot_receMsg);QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(执行欢迎界面的构造函数!,str); }WelcomDlg::~WelcomDlg() {QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);outPutLogMsg(执行欢迎界面的析构函数!,str);delete ui; }void WelcomDlg::outPutLogMsg(QString strInfo,QString strIndex) {QString strTime QDateTime::currentDateTime().toString(yyyy-MM-dd: hh:mm:ss);strIndex.prepend(strTime);strIndex.append(strInfo);emit signalSendLogMsg(strIndex); } writedlg.h #ifndef WRITELOG_H #define WRITELOG_H#include QObject #include QMutex #include QThread #include QQueue #include QFile #include QTextStream#define LOG_NAME /log.txtclass WriteLog : public QObject {Q_OBJECT private:explicit WriteLog(QObject *parent nullptr);void openLogFile();void writeLogInfo(); public:static WriteLog * getInstance();~WriteLog();// void closeFileThread(); signals:public slots:void slot_receMsg(QString str);void slot_threadStarted(); // void slot_threadFinished(); private:static QMutex m_mutex;static WriteLog *m_instance;QThread m_thread;QQueueQString m_queue;QFile *m_file; // QTextStream *m_textStream;//似乎不能chuang创建指针 };#endif // WRITELOG_H writedlg.cpp #include writelog.h #include QMutexLocker #include QCoreApplication #include QDateTime #include QDirQMutex WriteLog::m_mutex; WriteLog *WriteLog::m_instance nullptr; WriteLog::WriteLog(QObject *parent): QObject(parent) {//创建或打开日志文件openLogFile();this-moveToThread(m_thread);connect(m_thread,QThread::started,this,WriteLog::slot_threadStarted);connect(m_thread,QThread::finished,this,QObject::deleteLater);m_thread.start(); }void WriteLog::openLogFile() {QString logDir QCoreApplication::applicationDirPath() /log/ QDateTime::currentDateTime().toString(yyyy-MM-dd);QDir dir(logDir);if(!dir.exists()){dir.mkpath(logDir);}logDir LOG_NAME;m_file new QFile(logDir);if(!m_file-open(QFile::WriteOnly | QFile::Text |QFile::Append));{return ;} // m_textStream new QTextStream(m_file); }void WriteLog::writeLogInfo() {if(m_queue.isEmpty()){return ;}QString strMsg m_queue.front();m_queue.pop_front();QTextStream textStream(m_file);textStreamstrMsg\r\n;m_file-flush();//将缓存区数据刷新到文件中 }WriteLog *WriteLog::getInstance() {if(m_instance nullptr){QMutexLocker locker(m_mutex);m_instance new WriteLog;}return m_instance; }WriteLog::~WriteLog()//没有执行析构 {//关闭日志文件,退出线程 // QString preStr1(End:); // QString time QDateTime::currentDateTime().toString(yyyy-MM-dd); // QString preStr2(); // if(m_file ! nullptr) // { // m_file-close(); // delete m_file; // m_file nullptr; // }// m_thread.quit(); // m_thread.wait(); }//void WriteLog::closeFileThread() //{ // QString preStr1(End:); // QString time QDateTime::currentDateTime().toString(yyyy-MM-dd); // QString preStr2(); // preStr1 time preStr2 \r\n; // m_queue.push_back(preStr1); // writeLogInfo();if(m_file ! nullptr){m_file-close();delete m_file;m_file nullptr;} m_thread.requestInterruption();m_thread.quit();m_thread.wait(); //}void WriteLog::slot_receMsg(QString str) {m_queue.push_back(str);writeLogInfo(); }void WriteLog::slot_threadStarted() {QString preStr1(Begin:);QString time QDateTime::currentDateTime().toString(yyyy-MM-dd);QString preStr2();preStr1 time preStr2 \r\n;QString str QString(%1 :%2(%3): ).arg(__FILE__).arg(__FUNCTION__).arg(__LINE__);QString strTime QDateTime::currentDateTime().toString(yyyy-MM-dd: hh:mm:ss);QString info(写日志线程启动);strTime str;info.prepend(strTime);info.prepend(preStr1);m_queue.push_back(info);writeLogInfo(); }//void WriteLog::slot_threadFinished() //{qDebug()线程完成; // m_queue.push_back(写日志线程结束); // writeLogInfo(); //} 以上程序的编译环境是在qt5.13.2用的编译器为MinGW32。程序运行正常但自我感觉日志文件被打开写日志接束后没有关闭线程没有关闭自己尝试过关闭线程与文件但都无法很好的解决望大神指导。
http://www.sadfv.cn/news/69787/

相关文章:

  • 宣传类的网站怎么做郑州seo多少钱
  • 广州市住房和城乡建设厅网站首页怎样营销
  • 成都公司做网站的汉中网站建设汉中
  • 怎么做网站的内部链接wordpress 主题更换
  • 什么网站做调查能赚钱吗网站建设相关知识博客
  • 企业营销型网站策划务广州装修公司哪家好
  • 深圳网站 商城制作网站域名起名
  • 建站之星怎么用门户网站demo下载
  • 株洲市网站关键词优化公司莱州市招聘网站
  • 广州自助建站qq网站在线登录网页版
  • 企业网站域名服务器如何推广自己网站的关键词
  • php程序员网站开发wordpress 里程密
  • 承德网站建设专家莱芜在线论坛最新消息
  • 南平做网站广州市建设工程安监站网站
  • 初学网站建设谷歌seo搜索引擎优化
  • 网站建设公司哪家好 干净磐石网络深圳 网站建设
  • 网站降权原因wordpress论坛用户
  • 建设校园网站意义中卫市建设局网站 冯进强
  • 微商网站推广超简洁网站
  • 金融理财网站开发南山网站公司定
  • 滨海新区建设和交通局网站朝阳网站关键词优化
  • 建个企业网站还是开个淘宝店搜索引擎seo优化
  • 太原网站制作哪家好做二手房网站有哪些资料
  • 网站用静态域名解析html写一个完整网页
  • 站长统计官网新郑市网站建设定制开发
  • 苏州专业网站建设设计公司哪家好汕头人才引进
  • 眉山招聘网站建设网页版微信扫一扫在哪
  • 网站开发的策划书短信营销
  • wordpress网仿站网站前台用什么做
  • 企业在建设银行网站怎么发工资培训机构白名单