9. GUI 面向对象设计OOD阶段
用户界面设计:
除了新的两个GUI类需要设计和编码,其他类直接可以沿用第2阶段中的所有类,直接调接口即可
两个GUI相关类的设计:
HistoryDialog类
class HistoryDialog : public QDialog {
Q_OBJECT
public:
HistoryDialog(QWidget *parent = NULL);
private:
//指向主窗口的指针
QtGuiApplication *mainwindow;
//历史记录文件的指针,从主窗口对象中的fp_history获得
FILE *fp;
Ui::HistoryDialog ui;
private slots:
//清除历史记录
void ClearHistory();
};
QtGuiApplication类
class QtGuiApplication : public QMainWindow
{
Q_OBJECT
friend class HistoryDialog;
public:
QtGuiApplication(QWidget *parent = Q_NULLPTR);
~QtGuiApplication();
private:
Ui::QtGuiApplicationClass ui;
HistoryDialog *historydialog;
//用来进行题目相关操作
Question question;
//现存的计时器线程个数,线程间同步用
int timer_thread_amount;
//历史记录文件指针
FILE *fp_history;
int question_amount;
int current_index;
int current_score;
//新建计时器线程
void StartTimer(int seconds);
signals:
//超时时要发送的信号
void NoTimeSignal();
private slots:
//显示历史记录按钮的响应函数
void ShowHistory();
//开始做题按钮的响应函数
void StartExercises();
//提交答案按钮的响应函数
void SubmitAnswer();
//下一道题按钮的响应函数
void NextQuestion();
//超时的响应函数
void RunOutOfTime();
};