当前位置:   article > 正文

日志管理系统---初版

日志管理系统

写日志以及日志查询系统--本地版

日志存储在文件夹内,不涉及到数据库以及网络操作,新手上路,很多功能不完善,还请指教

一共两个界面,三个类:

  • 两个界面
  1. login.ui----登录界面
  2. log.ui------日志操作界面
  • 三个类
  1. FileOperate--文件操作类
  2. Login--登录操作类
  3. Log--日志操作​​​​​​类

界面代码

login.ui

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ui version="4.0">
  3. <class>Login</class>
  4. <widget class="QDialog" name="Login">
  5. <property name="geometry">
  6. <rect>
  7. <x>0</x>
  8. <y>0</y>
  9. <width>400</width>
  10. <height>300</height>
  11. </rect>
  12. </property>
  13. <property name="windowTitle">
  14. <string>Dialog</string>
  15. </property>
  16. <layout class="QGridLayout" name="gridLayout">
  17. <item row="0" column="0">
  18. <layout class="QHBoxLayout" name="horizontalLayout">
  19. <item>
  20. <widget class="QLabel" name="nameLabel">
  21. <property name="text">
  22. <string>用户名</string>
  23. </property>
  24. </widget>
  25. </item>
  26. <item>
  27. <widget class="QLineEdit" name="nameLineEdit"/>
  28. </item>
  29. </layout>
  30. </item>
  31. <item row="1" column="0">
  32. <layout class="QHBoxLayout" name="horizontalLayout_2">
  33. <item>
  34. <widget class="QLabel" name="passLabel">
  35. <property name="text">
  36. <string> 密码 </string>
  37. </property>
  38. </widget>
  39. </item>
  40. <item>
  41. <widget class="QLineEdit" name="passLineEdit"/>
  42. </item>
  43. </layout>
  44. </item>
  45. <item row="2" column="0">
  46. <layout class="QHBoxLayout" name="horizontalLayout_3">
  47. <item>
  48. <widget class="QPushButton" name="loBtn">
  49. <property name="text">
  50. <string>登录</string>
  51. </property>
  52. </widget>
  53. </item>
  54. <item>
  55. <widget class="QPushButton" name="creBtn">
  56. <property name="text">
  57. <string>点此注册</string>
  58. </property>
  59. </widget>
  60. </item>
  61. </layout>
  62. </item>
  63. <item row="3" column="0">
  64. <layout class="QHBoxLayout" name="horizontalLayout_4">
  65. <item>
  66. <widget class="QPushButton" name="reBtn">
  67. <property name="text">
  68. <string>注册</string>
  69. </property>
  70. </widget>
  71. </item>
  72. <item>
  73. <widget class="QPushButton" name="canlBtn">
  74. <property name="text">
  75. <string>取消</string>
  76. </property>
  77. </widget>
  78. </item>
  79. </layout>
  80. </item>
  81. </layout>
  82. </widget>
  83. <resources/>
  84. <connections/>
  85. </ui>

log.ui

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ui version="4.0">
  3. <class>Log</class>
  4. <widget class="QMainWindow" name="Log">
  5. <property name="geometry">
  6. <rect>
  7. <x>0</x>
  8. <y>0</y>
  9. <width>649</width>
  10. <height>472</height>
  11. </rect>
  12. </property>
  13. <property name="windowTitle">
  14. <string>Log</string>
  15. </property>
  16. <widget class="QWidget" name="centralWidget">
  17. <layout class="QGridLayout" name="gridLayout">
  18. <item row="0" column="0">
  19. <widget class="QTabWidget" name="tabWidget">
  20. <property name="currentIndex">
  21. <number>1</number>
  22. </property>
  23. <widget class="QWidget" name="writeLogTab">
  24. <attribute name="title">
  25. <string>Tab 1</string>
  26. </attribute>
  27. <layout class="QGridLayout" name="gridLayout_2">
  28. <item row="0" column="0">
  29. <widget class="QLineEdit" name="taskMenuLineEdit">
  30. <property name="inputMethodHints">
  31. <set>Qt::ImhNone</set>
  32. </property>
  33. <property name="text">
  34. <string>任务</string>
  35. </property>
  36. <property name="alignment">
  37. <set>Qt::AlignCenter</set>
  38. </property>
  39. <property name="cursorMoveStyle">
  40. <enum>Qt::LogicalMoveStyle</enum>
  41. </property>
  42. </widget>
  43. </item>
  44. <item row="0" column="1">
  45. <widget class="QLineEdit" name="timeMenuLineEdit">
  46. <property name="text">
  47. <string>耗时</string>
  48. </property>
  49. <property name="alignment">
  50. <set>Qt::AlignCenter</set>
  51. </property>
  52. </widget>
  53. </item>
  54. <item row="0" column="2">
  55. <widget class="QLineEdit" name="rateMenuLineEdit">
  56. <property name="text">
  57. <string>完成率(所占百分比)</string>
  58. </property>
  59. <property name="alignment">
  60. <set>Qt::AlignCenter</set>
  61. </property>
  62. </widget>
  63. </item>
  64. <item row="0" column="3">
  65. <spacer name="horizontalSpacer">
  66. <property name="orientation">
  67. <enum>Qt::Horizontal</enum>
  68. </property>
  69. <property name="sizeHint" stdset="0">
  70. <size>
  71. <width>145</width>
  72. <height>20</height>
  73. </size>
  74. </property>
  75. </spacer>
  76. </item>
  77. <item row="1" column="0">
  78. <widget class="QLineEdit" name="taskLineEdit_1"/>
  79. </item>
  80. <item row="1" column="1">
  81. <widget class="QLineEdit" name="timeLineEdit_1"/>
  82. </item>
  83. <item row="1" column="2">
  84. <widget class="QLineEdit" name="rateLineEdit_1"/>
  85. </item>
  86. <item row="1" column="3">
  87. <widget class="QPushButton" name="saveBtn_1">
  88. <property name="text">
  89. <string> 保存</string>
  90. </property>
  91. </widget>
  92. </item>
  93. <item row="2" column="0">
  94. <widget class="QLineEdit" name="taskLineEdit_2"/>
  95. </item>
  96. <item row="2" column="1">
  97. <widget class="QLineEdit" name="timeLineEdit_2"/>
  98. </item>
  99. <item row="2" column="2">
  100. <widget class="QLineEdit" name="rateLineEdit_2"/>
  101. </item>
  102. <item row="2" column="3">
  103. <widget class="QPushButton" name="saveBtn_2">
  104. <property name="text">
  105. <string> 保存</string>
  106. </property>
  107. </widget>
  108. </item>
  109. <item row="3" column="0">
  110. <widget class="QLineEdit" name="taskLineEdit_3"/>
  111. </item>
  112. <item row="3" column="1">
  113. <widget class="QLineEdit" name="timeLineEdit_3"/>
  114. </item>
  115. <item row="3" column="2">
  116. <widget class="QLineEdit" name="rateLineEdit_3"/>
  117. </item>
  118. <item row="3" column="3">
  119. <widget class="QPushButton" name="saveBtn_3">
  120. <property name="text">
  121. <string> 保存</string>
  122. </property>
  123. </widget>
  124. </item>
  125. <item row="4" column="0">
  126. <widget class="QLineEdit" name="taskLineEdit_4"/>
  127. </item>
  128. <item row="4" column="1">
  129. <widget class="QLineEdit" name="timeLineEdit_4"/>
  130. </item>
  131. <item row="4" column="2">
  132. <widget class="QLineEdit" name="rateLineEdit_4"/>
  133. </item>
  134. <item row="4" column="3">
  135. <widget class="QPushButton" name="saveBtn_4">
  136. <property name="text">
  137. <string> 保存</string>
  138. </property>
  139. </widget>
  140. </item>
  141. <item row="5" column="0">
  142. <widget class="QLineEdit" name="taskLineEdit_5"/>
  143. </item>
  144. <item row="5" column="1">
  145. <widget class="QLineEdit" name="timeLineEdit_5"/>
  146. </item>
  147. <item row="5" column="2">
  148. <widget class="QLineEdit" name="rateLineEdit_5"/>
  149. </item>
  150. <item row="5" column="3">
  151. <widget class="QPushButton" name="saveBtn_5">
  152. <property name="text">
  153. <string> 保存</string>
  154. </property>
  155. </widget>
  156. </item>
  157. <item row="6" column="0">
  158. <widget class="QLineEdit" name="taskLineEdit_6"/>
  159. </item>
  160. <item row="6" column="1">
  161. <widget class="QLineEdit" name="timeLineEdit_6"/>
  162. </item>
  163. <item row="6" column="2">
  164. <widget class="QLineEdit" name="rateLineEdit_6"/>
  165. </item>
  166. <item row="6" column="3">
  167. <widget class="QPushButton" name="saveBtn_6">
  168. <property name="text">
  169. <string> 保存</string>
  170. </property>
  171. </widget>
  172. </item>
  173. <item row="7" column="0">
  174. <widget class="QLineEdit" name="taskLineEdit_7"/>
  175. </item>
  176. <item row="7" column="1">
  177. <widget class="QLineEdit" name="timeLineEdit_7"/>
  178. </item>
  179. <item row="7" column="2">
  180. <widget class="QLineEdit" name="rateLineEdit_7"/>
  181. </item>
  182. <item row="7" column="3">
  183. <widget class="QPushButton" name="saveBtn_7">
  184. <property name="text">
  185. <string> 保存</string>
  186. </property>
  187. </widget>
  188. </item>
  189. <item row="8" column="0">
  190. <widget class="QLineEdit" name="taskLineEdit_8"/>
  191. </item>
  192. <item row="8" column="1">
  193. <widget class="QLineEdit" name="timeLineEdit_8"/>
  194. </item>
  195. <item row="8" column="2">
  196. <widget class="QLineEdit" name="rateLineEdit_8"/>
  197. </item>
  198. <item row="8" column="3">
  199. <widget class="QPushButton" name="saveBtn_8">
  200. <property name="text">
  201. <string> 保存</string>
  202. </property>
  203. </widget>
  204. </item>
  205. </layout>
  206. </widget>
  207. <widget class="QWidget" name="readLogTab">
  208. <attribute name="title">
  209. <string>Tab 2</string>
  210. </attribute>
  211. <layout class="QGridLayout" name="gridLayout_3">
  212. <item row="0" column="0">
  213. <widget class="QCalendarWidget" name="calendarWidget"/>
  214. </item>
  215. <item row="0" column="1" rowspan="2">
  216. <widget class="QTableView" name="tableView"/>
  217. </item>
  218. </layout>
  219. </widget>
  220. </widget>
  221. </item>
  222. </layout>
  223. </widget>
  224. <widget class="QMenuBar" name="menuBar">
  225. <property name="geometry">
  226. <rect>
  227. <x>0</x>
  228. <y>0</y>
  229. <width>649</width>
  230. <height>22</height>
  231. </rect>
  232. </property>
  233. </widget>
  234. <widget class="QToolBar" name="mainToolBar">
  235. <attribute name="toolBarArea">
  236. <enum>TopToolBarArea</enum>
  237. </attribute>
  238. <attribute name="toolBarBreak">
  239. <bool>false</bool>
  240. </attribute>
  241. </widget>
  242. <widget class="QStatusBar" name="statusBar"/>
  243. </widget>
  244. <layoutdefault spacing="6" margin="11"/>
  245. <resources/>
  246. <connections/>
  247. </ui>

功能实现代码

FileOperate

fileoperate.h

  1. #ifndef FILEOPERATE_H
  2. #define FILEOPERATE_H
  3. #include<QString>
  4. #include<QObject>
  5. #include<QMap>
  6. #include<QDate>
  7. class FileOperate
  8. {
  9. public:
  10. FileOperate();
  11. QString strUserName;//用户名
  12. const QString strInfomationPath = QObject::tr("./source/Infomation/info.txt");//用户信息存放位置
  13. const QString strUserBasePath = QObject::tr("./source/User");//用户存放位置
  14. QMap<QString, QString>infoMap;//用户信息<用户名, 密码>
  15. struct LOG
  16. {
  17. QString task;
  18. QString time;
  19. QString rate;
  20. }log;//log
  21. QList<LOG> logList;//log列表
  22. bool newDirAndFile(bool stand = false);//检查并设置目录及文件
  23. bool getInfo();//获取用户信息
  24. bool writeInfo(const QString, const QString);//写入用户信息
  25. bool getLog(QDate data = QDate::currentDate());//获取日志
  26. bool writeLog(const QString, const QString, const QString);//写入日志
  27. };
  28. #endif // FILEOPERATE_H

fileoperate.cpp

  1. #include "fileoperate.h"
  2. #include<QDir>
  3. #include<QFile>
  4. #include<QTextStream>
  5. FileOperate::FileOperate()
  6. {
  7. this->strUserName = nullptr;
  8. this->log.task = nullptr;
  9. this->log.time = nullptr;
  10. this->log.rate = nullptr;
  11. this->newDirAndFile();
  12. }
  13. bool FileOperate::newDirAndFile(bool stand)
  14. {
  15. QDir dir;
  16. //检查并创建目录 ./source/Infomation/
  17. if (!dir.exists(QObject::tr("./source/Infomation")))
  18. if (!dir.mkpath(QObject::tr("./source/Infomation")))
  19. return false;
  20. //检查并创建文件 ./source/Infomation/info.txt
  21. QFile file;
  22. file.setFileName(this->strInfomationPath);
  23. if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
  24. return false;
  25. // info.txt 文件中写入 用户名\t密码\n
  26. //name\tpass\n
  27. QTextStream info(&file);
  28. info << QObject::tr("用户名\t密码\n");
  29. file.close();
  30. //检查并创建目录 ./source/User/
  31. if (!dir.exists(this->strUserBasePath))
  32. if (!dir.mkpath(this->strUserBasePath))
  33. return false;
  34. //stand 为 false 时执行到此结束,为 true 时继续下面的步骤
  35. if (!stand)
  36. return true;
  37. //检查并创建目录 ./source/User/userName/
  38. if (!dir.exists(this->strUserBasePath + QObject::tr("/") + this->strUserName))
  39. if (!dir.mkpath(this->strUserBasePath + QObject::tr("/") + this->strUserName))
  40. return false;
  41. //检查并创建文件 ./source/User/userName/date.txt
  42. file.setFileName(this->strUserBasePath +
  43. QObject::tr("/") +
  44. this->strUserName +
  45. QObject::tr("/") +
  46. QDate::currentDate().toString(QObject::tr("yyyyMMdd")) +
  47. QObject::tr(".txt"));
  48. if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
  49. return false;
  50. // date.txt 文件中写入 序号\t任务\t\t\t\t\t\t\t\t时间\t完成率\n
  51. //name\tpass\n
  52. QTextStream date(&file);
  53. date << QObject::tr("序号\t任务\t\t\t\t\t\t\t\t时间\t完成率\n");
  54. file.close();
  55. return true;
  56. }
  57. bool FileOperate::getInfo()
  58. {
  59. this->infoMap.clear();
  60. //打开用户信息文件 ./source/Infomation/info.txt
  61. QFile file(this->strInfomationPath);
  62. if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
  63. return false;
  64. QTextStream out(&file);
  65. QString strLine = out.readLine();
  66. while (!out.atEnd())
  67. {
  68. strLine = out.readLine();
  69. if (QObject::tr("") == strLine)
  70. continue;
  71. QStringList strList = strLine.split(QObject::tr("\t"));
  72. if (2 != strList.count())
  73. continue;
  74. this->infoMap.insert(strList.at(0), strList.at(1));
  75. }
  76. file.close();
  77. return true;
  78. }
  79. bool FileOperate::writeInfo(const QString userName, const QString userPass)
  80. {
  81. //打开用户信息文件 ./source/Infomation/info.txt
  82. QFile file(this->strInfomationPath);
  83. if (!file.open(QIODevice::Append | QIODevice::Text))
  84. return false;
  85. QTextStream in(&file);
  86. in << userName << QObject::tr("\t") << userPass << QObject::tr("\n");
  87. this->infoMap.insert(userName, userPass);
  88. file.close();
  89. return true;
  90. }
  91. bool FileOperate::getLog(QDate data)
  92. {
  93. this->logList.clear();
  94. //打开用户日志文件 ./source/User/userName/date.txt
  95. QFile file(this->strUserBasePath +
  96. QObject::tr("/") +
  97. this->strUserName +
  98. QObject::tr("/") +
  99. /*QDate::currentDate()*/data.toString(QObject::tr("yyyyMMdd")) +
  100. QObject::tr(".txt"));
  101. if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
  102. return false;
  103. QTextStream out(&file);
  104. QString strLine = out.readLine();
  105. while(!out.atEnd())
  106. {
  107. strLine = out.readLine();
  108. if (QObject::tr("") == strLine)
  109. continue;
  110. QStringList strList = strLine.split(QObject::tr("\t"));
  111. if (4 != strList.count())
  112. continue;
  113. this->log.task = strList.at(1);
  114. this->log.time = strList.at(2);
  115. this->log.rate = strList.at(3);
  116. this->logList.append(this->log);
  117. }
  118. file.close();
  119. return true;
  120. }
  121. bool FileOperate::writeLog(const QString task, const QString time, const QString rate)
  122. {
  123. if (!this->getLog())
  124. return false;
  125. //打开用户日志文件 ./source/User/userName/date.txt
  126. QFile file(this->strUserBasePath +
  127. QObject::tr("/") +
  128. this->strUserName +
  129. QObject::tr("/") +
  130. QDate::currentDate().toString(QObject::tr("yyyyMMdd")) +
  131. QObject::tr(".txt"));
  132. if (!file.open(QIODevice::Append | QIODevice::Text))
  133. return false;
  134. this->log.task = task;
  135. this->log.time = time;
  136. this->log.rate = rate;
  137. this->logList.append(this->log);
  138. QTextStream in(&file);
  139. QString strNum = QString().setNum(this->logList.count(), 10);
  140. in << strNum << QObject::tr("\t") << task << QObject::tr("\t") << time << QObject::tr("\t") << rate << QObject::tr("\n");
  141. file.close();
  142. return true;
  143. }

Login

login.h

  1. #ifndef LOGIN_H
  2. #define LOGIN_H
  3. #include <QDialog>
  4. #include"fileoperate.h"
  5. namespace Ui {
  6. class Login;
  7. }
  8. class Login : public QDialog
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit Login(QWidget *parent = 0);
  13. Login(FileOperate* ,QWidget *parent = 0);
  14. ~Login();
  15. private slots:
  16. void on_canlBtn_clicked(bool checked);
  17. void on_creBtn_clicked();
  18. void on_reBtn_clicked();
  19. void on_loBtn_clicked();
  20. private:
  21. Ui::Login *ui;
  22. FileOperate* fileOperate;
  23. };
  24. #endif // LOGIN_H

login.cpp

  1. #include "login.h"
  2. #include "ui_login.h"
  3. #include<QMessageBox>
  4. Login::Login(QWidget *parent) :
  5. QDialog(parent),
  6. ui(new Ui::Login)
  7. {
  8. ui->setupUi(this);
  9. }
  10. Login::Login(FileOperate* fileOperate, QWidget *parent):
  11. QDialog(parent),
  12. ui(new Ui::Login)
  13. {
  14. ui->setupUi(this);
  15. this->setWindowTitle(tr("登录系统"));
  16. this->fileOperate = fileOperate;
  17. ui->reBtn->hide();//注册按钮隐藏
  18. ui->canlBtn->hide();//取消按钮隐藏
  19. //设置占位符
  20. ui->nameLineEdit->setPlaceholderText(tr("请输入用户名"));
  21. ui->passLineEdit->setPlaceholderText(tr("请输入密码"));
  22. //设置密码栏格式
  23. ui->passLineEdit->setEchoMode(QLineEdit::Password);
  24. }
  25. Login::~Login()
  26. {
  27. delete ui;
  28. }
  29. //取消按钮
  30. void Login::on_canlBtn_clicked(bool checked)
  31. {
  32. if (!checked)
  33. {
  34. ui->nameLineEdit->clear();//用户名清空
  35. ui->passLineEdit->clear();//密码清空
  36. }
  37. ui->loBtn->show();//登录按钮显示
  38. ui->creBtn->show();//点击注册按钮显示
  39. ui->reBtn->hide();//注册按钮隐藏
  40. ui->canlBtn->hide();//取消按钮隐藏
  41. }
  42. //点击注册按钮
  43. void Login::on_creBtn_clicked()
  44. {
  45. //密码用户名清空,光标停留在用户名栏
  46. ui->nameLineEdit->clear();
  47. ui->passLineEdit->clear();
  48. ui->nameLineEdit->setFocus();
  49. ui->reBtn->show();//注册按钮显示
  50. ui->canlBtn->show();//取消按钮显示
  51. ui->loBtn->hide();//登录按钮隐藏
  52. ui->creBtn->hide();//点击注册按钮隐藏
  53. }
  54. //注册按钮
  55. void Login::on_reBtn_clicked()
  56. {
  57. QString userName = ui->nameLineEdit->text();
  58. QString userPass = ui->passLineEdit->text();
  59. if (userName.isEmpty())
  60. {
  61. QMessageBox::warning(this, tr("警告"), tr("用户名不能为空"));
  62. ui->nameLineEdit->clear();
  63. ui->passLineEdit->clear();
  64. ui->nameLineEdit->setFocus();
  65. return;
  66. }
  67. if (userName.contains(" "))
  68. {
  69. QMessageBox::warning(this, tr("警告"), tr("用户名不能包含空格"));
  70. ui->nameLineEdit->clear();
  71. ui->passLineEdit->clear();
  72. ui->nameLineEdit->setFocus();
  73. return;
  74. }
  75. if (userPass.isEmpty())
  76. {
  77. QMessageBox::warning(this, tr("警告"), tr("密码不能为空"));
  78. ui->passLineEdit->clear();
  79. ui->passLineEdit->setFocus();
  80. return;
  81. }
  82. if (userPass.contains(" "))
  83. {
  84. QMessageBox::warning(this, tr("警告"), tr("密码不能包含空格"));
  85. ui->passLineEdit->clear();
  86. ui->passLineEdit->setFocus();
  87. return;
  88. }
  89. if (this->fileOperate->infoMap.contains(userName))
  90. {
  91. QMessageBox::warning(this, tr("警告"), tr("用户名已存在"));
  92. ui->nameLineEdit->clear();
  93. ui->passLineEdit->clear();
  94. ui->nameLineEdit->setFocus();
  95. return;
  96. }
  97. //this->fileOperate->infoMap.insert(userName, userPass);写入步骤添加,此处无需添加
  98. //写入失败,也就是注册失败????
  99. if (!this->fileOperate->writeInfo(userName, userPass))
  100. return;
  101. //写入成功,注册成功
  102. QMessageBox::information(this, tr("提示"), tr("注册成功请登录"));
  103. //返回登录界面
  104. on_canlBtn_clicked(true);
  105. return;
  106. }
  107. void Login::on_loBtn_clicked()
  108. {
  109. QString userName = ui->nameLineEdit->text();
  110. QString userPass = ui->passLineEdit->text();
  111. this->fileOperate->getInfo();
  112. if (userName.isEmpty() || userPass.isEmpty())
  113. {
  114. QMessageBox::warning(this, tr("警告"), tr("用户名或密码不能为空"));
  115. ui->nameLineEdit->clear();
  116. ui->passLineEdit->clear();
  117. ui->nameLineEdit->setFocus();
  118. return;
  119. }
  120. if (
  121. (!this->fileOperate->infoMap.contains(userName)) ||
  122. (userPass != this->fileOperate->infoMap.value(userName))
  123. )
  124. {
  125. QMessageBox::warning(this, tr("警告"), tr("用户名或密码错误"));
  126. ui->nameLineEdit->clear();
  127. ui->passLineEdit->clear();
  128. ui->nameLineEdit->setFocus();
  129. return;
  130. }
  131. this->fileOperate->strUserName = userName;
  132. if (!this->fileOperate->newDirAndFile(true))
  133. return;
  134. /*if (!this->fileOperate->getLog())
  135. return;*/
  136. this->accept();
  137. }

Log

log.h

  1. #ifndef LOG_H
  2. #define LOG_H
  3. #include <QMainWindow>
  4. #include<QStandardItemModel>
  5. #include"fileoperate.h"
  6. namespace Ui {
  7. class Log;
  8. }
  9. class Log : public QMainWindow
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit Log(QWidget *parent = 0);
  14. Log(FileOperate*, QWidget *parent = 0);
  15. ~Log();
  16. private slots:
  17. void on_saveBtn_1_clicked();
  18. void on_saveBtn_2_clicked();
  19. void on_saveBtn_3_clicked();
  20. void on_saveBtn_4_clicked();
  21. void on_saveBtn_5_clicked();
  22. void on_saveBtn_6_clicked();
  23. void on_saveBtn_7_clicked();
  24. void on_saveBtn_8_clicked();
  25. void on_calendarWidget_clicked(const QDate &date);
  26. private:
  27. Ui::Log *ui;
  28. FileOperate* fileOperate;
  29. QStandardItemModel* model = new QStandardItemModel;
  30. bool isOkSaveLog(const QString, const QString, const QString);
  31. void setWriteLogTab();
  32. void setReadLogTab();
  33. };
  34. #endif // LOG_H

log.cpp

  1. #include "log.h"
  2. #include "ui_log.h"
  3. #include<QMessageBox>
  4. Log::Log(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::Log)
  7. {
  8. ui->setupUi(this);
  9. }
  10. Log::Log(FileOperate *fileOperate, QWidget *parent) :
  11. QMainWindow(parent),
  12. ui(new Ui::Log)
  13. {
  14. ui->setupUi(this);
  15. this->fileOperate = fileOperate;
  16. //设置窗口标题
  17. this->setWindowTitle(tr("日志管理"));
  18. this->setWriteLogTab();
  19. this->setReadLogTab();
  20. ui->tabWidget->setCurrentIndex(0);
  21. }
  22. Log::~Log()
  23. {
  24. delete ui;
  25. }
  26. bool Log::isOkSaveLog(const QString taskText, const QString timeText, const QString rateText)
  27. {
  28. if (
  29. (taskText.trimmed().isEmpty()) ||
  30. (timeText.trimmed().isEmpty()) ||
  31. (rateText.trimmed().isEmpty())
  32. )
  33. return false;
  34. QString task = taskText.trimmed();
  35. QString time = timeText.trimmed();
  36. QString rate = rateText.trimmed();
  37. if ((time.toInt() > 24) || (time.toInt() < 0))
  38. return false;
  39. if ((rate.toInt() > 100) || (rate.toInt() < 0))
  40. return false;
  41. //写入步骤操作,此处无需操作
  42. /*
  43. this->fileOperate->log.task = task;
  44. this->fileOperate->log.time = time;
  45. this->fileOperate->log.rate = rate;
  46. this->fileOperate->logList.append(log);
  47. */
  48. return this->fileOperate->writeLog(task, time, rate);
  49. }
  50. void Log::setWriteLogTab()
  51. {
  52. //设置标题文本
  53. ui->tabWidget->setTabText(0, tr("写日志"));
  54. //设置无边框且透明
  55. ui->taskMenuLineEdit->setStyleSheet(tr("background:transparent;border-width:0;border-style:outset"));
  56. ui->timeMenuLineEdit->setStyleSheet(tr("background:transparent;border-width:0;border-style:outset"));
  57. ui->rateMenuLineEdit->setStyleSheet(tr("background:transparent;border-width:0;border-style:outset"));
  58. }
  59. void Log::setReadLogTab()
  60. {
  61. //设置标题文本
  62. ui->tabWidget->setTabText(1, tr("查阅日志"));
  63. //设置tabelview
  64. //QStandardItemModel* model = new QStandardItemModel;
  65. model->setColumnCount(3);
  66. model->setHeaderData(0, Qt::Horizontal, tr("任务"));
  67. model->setHeaderData(1, Qt::Horizontal, tr("耗时"));
  68. model->setHeaderData(2, Qt::Horizontal, tr("完成率(所占百分比)"));
  69. ui->tableView->setModel(model);
  70. //ui->tableView->setFixedWidth(200);
  71. ui->calendarWidget->setFixedWidth(250);
  72. ui->tableView->hide();
  73. }
  74. void Log::on_saveBtn_1_clicked()
  75. {
  76. if (!this->isOkSaveLog(
  77. ui->taskLineEdit_1->text(),
  78. ui->timeLineEdit_1->text(),
  79. ui->rateLineEdit_1->text())
  80. )
  81. return;
  82. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  83. }
  84. void Log::on_saveBtn_2_clicked()
  85. {
  86. if (!this->isOkSaveLog(
  87. ui->taskLineEdit_2->text(),
  88. ui->timeLineEdit_2->text(),
  89. ui->rateLineEdit_2->text())
  90. )
  91. return;
  92. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  93. }
  94. void Log::on_saveBtn_3_clicked()
  95. {
  96. if (!this->isOkSaveLog(
  97. ui->taskLineEdit_3->text(),
  98. ui->timeLineEdit_3->text(),
  99. ui->rateLineEdit_3->text())
  100. )
  101. return;
  102. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  103. }
  104. void Log::on_saveBtn_4_clicked()
  105. {
  106. if (!this->isOkSaveLog(
  107. ui->taskLineEdit_4->text(),
  108. ui->timeLineEdit_4->text(),
  109. ui->rateLineEdit_4->text())
  110. )
  111. return;
  112. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  113. }
  114. void Log::on_saveBtn_5_clicked()
  115. {
  116. if (!this->isOkSaveLog(
  117. ui->taskLineEdit_5->text(),
  118. ui->timeLineEdit_5->text(),
  119. ui->rateLineEdit_5->text())
  120. )
  121. return;
  122. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  123. }
  124. void Log::on_saveBtn_6_clicked()
  125. {
  126. if (!this->isOkSaveLog(
  127. ui->taskLineEdit_6->text(),
  128. ui->timeLineEdit_6->text(),
  129. ui->rateLineEdit_6->text())
  130. )
  131. return;
  132. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  133. }
  134. void Log::on_saveBtn_7_clicked()
  135. {
  136. if (!this->isOkSaveLog(
  137. ui->taskLineEdit_7->text(),
  138. ui->timeLineEdit_7->text(),
  139. ui->rateLineEdit_7->text())
  140. )
  141. return;
  142. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  143. }
  144. void Log::on_saveBtn_8_clicked()
  145. {
  146. if (!this->isOkSaveLog(
  147. ui->taskLineEdit_8->text(),
  148. ui->timeLineEdit_8->text(),
  149. ui->rateLineEdit_8->text())
  150. )
  151. return;
  152. QMessageBox::information(this, tr("提示"), tr("保存成功"));
  153. }
  154. void Log::on_calendarWidget_clicked(const QDate &date)
  155. {
  156. ui->tableView->hide();
  157. if (!this->fileOperate->getLog(date))
  158. return;
  159. if (0 == this->fileOperate->logList.count())
  160. {
  161. QMessageBox::warning(this, tr("警告"), tr("此日期无日志"));
  162. return;
  163. }
  164. this->model->setRowCount(this->fileOperate->logList.count());
  165. /*
  166. QStringList strTaskList = QStringList();
  167. QStringList strTimeList = QStringList();
  168. QStringList strRateList = QStringList();
  169. */
  170. for (int i = 0; i < this->fileOperate->logList.count(); i++)
  171. {
  172. model->setItem(i, 0, new QStandardItem(this->fileOperate->logList.at(i).task));
  173. model->setItem(i, 1, new QStandardItem(this->fileOperate->logList.at(i).time));
  174. model->setItem(i, 2, new QStandardItem(this->fileOperate->logList.at(i).rate));
  175. /*
  176. strTaskList.append(this->fileOperate->logList.at(i).task);
  177. strTimeList.append(this->fileOperate->logList.at(i).time);
  178. strRateList.append(this->fileOperate->logList.at(i).rate);
  179. */
  180. }
  181. ui->tableView->show();
  182. }

main.cpp

  1. #include "log.h"
  2. #include <QApplication>
  3. #include"login.h"
  4. #include"fileoperate.h"
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. FileOperate fileOperate = FileOperate();
  9. Login ldg(&fileOperate);
  10. if (QDialog::Accepted == ldg.exec())
  11. {
  12. Log w(&fileOperate);
  13. w.show();
  14. return a.exec();
  15. }
  16. return 0;
  17. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/144909
推荐阅读
相关标签
  

闽ICP备14008679号