一.目的
1.实现课程的添加与删除
2.实现课程自动提示与切换
3.实现软件自动获取时间
二.UI设计
主页面
管理页面
三.代码思路
主要用到以下控件:
QPushButton
textEdit
lineEdit
checkBox
dateEdit
四.实现思路
主页面:
日期(自动获取当前系统时间并显示)
课程切换(自动根据时间切换显示课程)
天气(嵌入天气网页作为背景?)
管理页面:
添加(点击添加显示到列表中),成功后跳出提示框
取消(清空信息)
加:返回键(返回主页面)
课程列表(保存显示课程名,可以对课程进行编辑或修改)
加:编辑、删除
四.整体代码架构
1.三个类和UI界面
mainWidow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
SetWindow *ppage=NULL;
FirstWeek *fpage=NULL;
QVector<QString> weeks={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
QMap<QString,int> mapDay;//英语周末的转换
QString lastClass;
QString lastJ;
QString curClass;
QString curJ;
QString furClass;
QString furJ;
QString temClass;
QMap<int,QString> toDayClass;//今天的课
QString curClassTime;//当前时分
int curClassTime1;
QMap<QString,int> numClassMap;//当前第几大节
int classTime;//今天的几节课记录
int curD;//记录星期几
int curWeek;//记录当前周
int count=0;//记录第几周
int timeArr[10]={800,935,1005,1140,1400,1535,1605,1740,1835,2000};//时间表
int subTime;//距离下一节课多久
//QDateTime CurrentTime=QDateTime::currentDateTime();
private:
Ui::MainWindow *ui;
private slots:
void timeUpdate();
};
setwindow.h
class SetWindow;
}
class SetWindow : public QMainWindow
{
Q_OBJECT
public:
explicit SetWindow(QWidget *parent = nullptr);
~SetWindow();
QFile f;
QString className=NULL;
int sinOrdouW=0;
QVector<int> weekDays;//存储每周几天
QMultiMap<int,QString> map;//存储每天几节
int begin=0;
int end=0;
QList<QString> values;//记录map里面的第几大节
private slots:
void on_okbtn_clicked();
void on_checkBox_clicked();
void on_checkBox_2_clicked();
void on_checkBox_3_clicked();
void on_checkBox_4_clicked();
void on_checkBox_5_clicked();
void on_checkBox_6_clicked();
void on_checkBox_7_clicked();
void on_beginWeek_textChanged(const QString &arg1);
void on_endWeek_textChanged(const QString &arg1);
void on_refbtn_clicked();
void on_day_12_currentTextChanged(const QString &arg1);
void on_day_11_currentTextChanged(const QString &arg1);
void on_day_21_currentTextChanged(const QString &arg1);
void on_day_22_currentTextChanged(const QString &arg1);
void on_day_31_currentTextChanged(const QString &arg1);
void on_day_32_currentTextChanged(const QString &arg1);
void on_day_41_currentTextChanged(const QString &arg1);
void on_day_42_currentTextChanged(const QString &arg1);
void on_day_51_currentTextChanged(const QString &arg1);
void on_day_52_currentTextChanged(const QString &arg1);
void on_day_71_currentTextChanged(const QString &arg1);
void on_day_61_currentTextChanged(const QString &arg1);
void on_day_62_currentTextChanged(const QString &arg1);
void on_day_72_currentTextChanged(const QString &arg1);
signals:
void back();
private:
Ui::SetWindow *ui;
};
Firstweek.h
class FirstWeek : public QMainWindow
{
Q_OBJECT
public:
explicit FirstWeek(QWidget *parent = nullptr);
~FirstWeek();
QString year;
QString month;
QString day;
QDate datef;
private:
Ui::FirstWeek *ui;
signals:
void backf();
void weekSig();
private slots:
void on_btn_ok_clicked();
};
五.结果演示
主页面:
设置页面:
学周计算:
六.心得
1.问题总结:
(1)代码比较乱,越写后面越乱
(2)代码涉及的变量比较杂乱,应该提前设计好
(3)变量名重复造成参数出错
(4)UI界面QLabel的堆叠,前后的区别导致无法显示
(5)UI界面不够美观