05a685c952
- calculator_designer_ext(Day2 增强版:表达式求值 + 括号,递归下降解析器)接入 cmake - calculator_mainwindow(Day3 上午):增强版计算器装进 QMainWindow, 菜单/状态栏/历史停靠窗,纯代码 + 显式 connect,与 mainwindow_showcase 形成坑卡对照 - calculator_mainwindow_qss(Day3 下午):上午版 + QSS 双主题美化(按键分色/伪状态/深浅切换) - 验证 mainwindow_showcase(QMainWindow 六大组件综合演示,.ui + .qrc) - OUTLINE_4DAY.md / ASSIGNMENTS.md Day3 衔接增强版起点 + 参考实现指引 - 补提交 Day2 calculator/ 与 calculator_designer/ 参考实现(CMakeLists 已引用) - 全量构建 28/28,4 目标离屏自测退出码 0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
57 lines
2.1 KiB
C++
57 lines
2.1 KiB
C++
// ============================================================================
|
||
// 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 <QMainWindow>
|
||
|
||
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
|