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:
@@ -25,9 +25,89 @@ add_teaching_example(qt_pitfall_stack_widget pitfall_stack_widget)
|
||||
add_teaching_example(qt_pitfall_lambda_capture pitfall_lambda_capture)
|
||||
add_teaching_example(qt_pitfall_double_connect pitfall_double_connect)
|
||||
add_teaching_example(qt_table_widget_basics table_widget)
|
||||
# Day2 下午案例参考实现(OUTLINE_4DAY.md Day2 下午「简易计算器」)
|
||||
add_teaching_example(qt_calculator calculator)
|
||||
|
||||
# Day2 案例的 Qt Designer(.ui) 对照版:界面用表单设计、业务逻辑与 qt_calculator
|
||||
# 一致。需要 AUTOUIC(add_teaching_example 只开 AUTOMOC),单独写 target。
|
||||
add_executable(qt_calculator_designer
|
||||
calculator_designer/qt_calculator_designer.cpp
|
||||
calculator_designer/calculator_designer.ui)
|
||||
set_target_properties(qt_calculator_designer PROPERTIES
|
||||
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF
|
||||
AUTOMOC ON AUTOUIC ON)
|
||||
target_link_libraries(qt_calculator_designer PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||
target_compile_options(qt_calculator_designer PRIVATE -Wall -Wextra)
|
||||
|
||||
# Day2 增强版计算器(calculator_designer_ext):在 Designer 版基础上把「立即计算」
|
||||
# 升级为「表达式求值」——独立 ExpressionEvaluator 用递归下降解析器实现运算符优先级
|
||||
# 与括号(含嵌套、未闭合自动补全)。多源文件 + .ui 表单,单独写 target。
|
||||
# 注意:子目录里那个 Qt Creator 导出的 CMakeLists.txt 不参与仓库构建(C++11 /
|
||||
# 目标名 Calculator / ANDROID 分支均不符仓库 C++17 规范),构建一律走本 target。
|
||||
add_executable(qt_calculator_designer_ext
|
||||
calculator_designer_ext/main.cpp
|
||||
calculator_designer_ext/calculatordesigner.cpp
|
||||
calculator_designer_ext/expressionevaluator.cpp
|
||||
calculator_designer_ext/widget.ui)
|
||||
target_include_directories(qt_calculator_designer_ext PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/calculator_designer_ext)
|
||||
set_target_properties(qt_calculator_designer_ext PROPERTIES
|
||||
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF
|
||||
AUTOMOC ON AUTOUIC ON)
|
||||
target_link_libraries(qt_calculator_designer_ext PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||
target_compile_options(qt_calculator_designer_ext PRIVATE -Wall -Wextra)
|
||||
|
||||
# Day5 综合案例参考实现(OUTLINE_4DAY.md §3 / §9.3)
|
||||
add_teaching_example(qt_student_manager student_manager)
|
||||
|
||||
# QMainWindow 教学综合示例(wiki「5 QMainWindow」pageId 58954529 的 5.1–5.6 全组件):
|
||||
# form designer(.ui) 定义主窗体结构、.qrc 资源文件提供应用图标。单独写 target
|
||||
# (标准 add_teaching_example 只开 AUTOMOC,本例还需 AUTOUIC+AUTORCC)。
|
||||
add_executable(qt_mainwindow_showcase
|
||||
mainwindow_showcase/main.cpp
|
||||
mainwindow_showcase/mainwindow_showcase.cpp
|
||||
mainwindow_showcase/mainwindow_showcase.h
|
||||
mainwindow_showcase/mainwindow.ui
|
||||
mainwindow_showcase/mainwindow.qrc)
|
||||
set_target_properties(qt_mainwindow_showcase PROPERTIES
|
||||
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF
|
||||
AUTOMOC ON AUTOUIC ON AUTORCC ON)
|
||||
target_link_libraries(qt_mainwindow_showcase PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||
target_compile_options(qt_mainwindow_showcase PRIVATE -Wall -Wextra)
|
||||
|
||||
# Day3 上午版参考实现:把 Day2 增强版计算器装进 QMainWindow(菜单/状态栏/历史停靠窗)。
|
||||
# 复用 Day2 的 calculatordesigner + expressionevaluator + widget.ui(自包含复制),
|
||||
# 新增 mainwindow.{h,cpp} 外壳 + 含 runSelfTest 的 main.cpp。无 QSS(QSS 在下午版)。
|
||||
add_executable(qt_calculator_mainwindow
|
||||
calculator_mainwindow/main.cpp
|
||||
calculator_mainwindow/mainwindow.cpp
|
||||
calculator_mainwindow/calculatordesigner.cpp
|
||||
calculator_mainwindow/expressionevaluator.cpp
|
||||
calculator_mainwindow/widget.ui)
|
||||
target_include_directories(qt_calculator_mainwindow PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/calculator_mainwindow)
|
||||
set_target_properties(qt_calculator_mainwindow PROPERTIES
|
||||
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF
|
||||
AUTOMOC ON AUTOUIC ON)
|
||||
target_link_libraries(qt_calculator_mainwindow PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||
target_compile_options(qt_calculator_mainwindow PRIVATE -Wall -Wextra)
|
||||
|
||||
# Day3 下午版参考实现:上午版 + QSS 双主题美化。复用上午版同款 5 文件(自包含复制),
|
||||
# 仅 mainwindow.{h,cpp} 加双主题 QSS + 视图菜单「深色主题」、main.cpp 自测加主题断言。
|
||||
add_executable(qt_calculator_mainwindow_qss
|
||||
calculator_mainwindow_qss/main.cpp
|
||||
calculator_mainwindow_qss/mainwindow.cpp
|
||||
calculator_mainwindow_qss/calculatordesigner.cpp
|
||||
calculator_mainwindow_qss/expressionevaluator.cpp
|
||||
calculator_mainwindow_qss/widget.ui)
|
||||
target_include_directories(qt_calculator_mainwindow_qss PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/calculator_mainwindow_qss)
|
||||
set_target_properties(qt_calculator_mainwindow_qss PROPERTIES
|
||||
CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF
|
||||
AUTOMOC ON AUTOUIC ON)
|
||||
target_link_libraries(qt_calculator_mainwindow_qss PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
|
||||
target_compile_options(qt_calculator_mainwindow_qss PRIVATE -Wall -Wextra)
|
||||
|
||||
add_custom_target(all_teaching_examples DEPENDS
|
||||
qt_qss_styling
|
||||
qt_model_view_basics
|
||||
@@ -39,4 +119,10 @@ add_custom_target(all_teaching_examples DEPENDS
|
||||
qt_pitfall_lambda_capture
|
||||
qt_pitfall_double_connect
|
||||
qt_table_widget_basics
|
||||
qt_student_manager)
|
||||
qt_calculator
|
||||
qt_calculator_designer
|
||||
qt_calculator_designer_ext
|
||||
qt_student_manager
|
||||
qt_mainwindow_showcase
|
||||
qt_calculator_mainwindow
|
||||
qt_calculator_mainwindow_qss)
|
||||
|
||||
Reference in New Issue
Block a user