// ============================================================================ // mainwindow.h —— Day3 下午版:上午版 + QSS 界面美化(双主题) // // 相对 ../calculator_mainwindow/(上午版)的改动: // ① 视图菜单新增「深色主题」可勾选项; // ② applyStyle(bool dark) 按主题切换 setStyleSheet; // ③ runSelfTest() 增加「主题切换确实改变 styleSheet」的断言。 // 计算器面板、菜单/停靠窗/状态栏结构与上午版完全一致——QSS 与逻辑正交, // 正是 Day3 下午「美化」环节要传达的核心点。 // ============================================================================ #ifndef CALCULATOR_MAINWINDOW_QSS_H #define CALCULATOR_MAINWINDOW_QSS_H #include class CalculatorDesigner; class QListWidget; class QListWidgetItem; class QDockWidget; class QAction; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget* parent = nullptr); ~MainWindow() override; bool runSelfTest(); private slots: void onAbout(); void onClearHistory(); void onToggleHistoryVisible(bool checked); void onToggleTheme(bool dark); // 【下午版新增】深/浅主题切换 void onEvaluated(const QString& expr, const QString& result); void onHistoryDoubleClicked(QListWidgetItem* item); private: void buildMenu(); void buildDock(); void buildStatusBar(); void refreshStatus(const QString& msg); void applyStyle(bool dark); // 【下午版新增】 CalculatorDesigner* m_calc = nullptr; QListWidget* m_history = nullptr; QDockWidget* m_dock = nullptr; QAction* m_actQuit = nullptr; QAction* m_actClearHistory = nullptr; QAction* m_actToggleHistory = nullptr; QAction* m_actToggleTheme = nullptr; // 【下午版新增】 QAction* m_actAbout = nullptr; bool m_dark = false; // 【下午版新增】当前是否深色主题 }; #endif // CALCULATOR_MAINWINDOW_QSS_H