#include "main_window.h" #include MainWindow::MainWindow(exam_system::BackendInterface* backend, QWidget* parent) : QMainWindow(parent), backend(backend) { setWindowTitle("数学学习软件"); setMinimumSize(600, 400); stackedWidget = new QStackedWidget(this); setCentralWidget(stackedWidget); // 创建各个页面 loginWidget = new LoginWidget(backend); selectionWidget = new SelectionWidget(backend); questionWidget = new QuestionWidget(backend); resultWidget = new ResultWidget(backend); //添加到堆栈 stackedWidget->addWidget(loginWidget); stackedWidget->addWidget(selectionWidget); stackedWidget->addWidget(questionWidget); stackedWidget->addWidget(resultWidget); //连接信号槽 connect(loginWidget, &LoginWidget::loginSuccess, this, &MainWindow::showSelection); connect(loginWidget, &LoginWidget::registerSuccess, this, &MainWindow::showSelection); connect(selectionWidget, &SelectionWidget::startRequest, this, &MainWindow::showQuestions); connect(selectionWidget, &SelectionWidget::logoutRequested, this, &MainWindow::logout); connect(questionWidget, &QuestionWidget::testCompleted, this, &MainWindow::showResult); connect(resultWidget, &ResultWidget::restartTest, this, &MainWindow::restartFromResult); connect(resultWidget, &ResultWidget::exitTest, this, &MainWindow::onExitTest); // 显示登录页面 stackedWidget->setCurrentWidget(loginWidget); } void MainWindow::showSelection(const QString& userName) { selectionWidget->setCurrentUserName(userName); stackedWidget->setCurrentWidget(selectionWidget); } void MainWindow::showQuestions(const QString& difficulty, int count) { questionWidget->startTest(difficulty, count); stackedWidget->setCurrentWidget(questionWidget); } void MainWindow::showResult(const exam_system::TestResult& result) { resultWidget->showResult(result); stackedWidget->setCurrentWidget(resultWidget); } void MainWindow::restartFromResult() { stackedWidget->setCurrentWidget(selectionWidget); } void MainWindow::logout(){ backend->UserLogout(); selectionWidget->setCurrentUserName(""); loginWidget->clearInputs(); stackedWidget->setCurrentWidget(loginWidget); } void MainWindow::onExitTest(){ backend->UserExit(); QApplication::quit(); }