Day3 教学示例:增强版计算器接入 + QMainWindow/QSS 两版参考实现
- 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>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
|
||||
// 对形如 "1+2*(3-4)" 的中缀表达式求值:
|
||||
// 乘除优先级高于加减,括号可提升优先级。
|
||||
// 【Day3 calculator_mainwindow】与 ../calculator_designer_ext/ 版一字不差,
|
||||
// 求值逻辑独立于界面外壳——Day3 把 QWidget 换成 QMainWindow,本类不动。
|
||||
class ExpressionEvaluator {
|
||||
public:
|
||||
struct Result {
|
||||
bool ok = false;
|
||||
double value = 0.0;
|
||||
QString errorMessage;
|
||||
};
|
||||
|
||||
// 结果显示精度(有效数字位数),要求不得小于 10。
|
||||
static constexpr int kResultPrecision = 12;
|
||||
static_assert(kResultPrecision >= 10, "结果显示精度不得小于 10 位有效数字");
|
||||
|
||||
static Result evaluate(const QString& expression);
|
||||
};
|
||||
Reference in New Issue
Block a user