讲义更新:Day2 幻灯片补 Designer 表单对照章节 + Day1 PPT + property_animation gif
- day2.html:组装思路改述为「两种信号槽写法」(lambda+context 批量绑定数字/运算键, 成员函数指针绑定等号/清空/退格);新增「番外:Qt Designer 表单版对照」章节, 讲 .ui 表单 + uic + setupUi + connectSlotsByName 自动连接,及改 objectName 致 on_<obj>_<sig>() 静默失败的坑;任务卡补「教师答案(不下发)」。 - day1.pptx:同步更新。 - property_animation/source.gif:属性动画示例演示 gif 资源。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 649 KiB |
Binary file not shown.
@@ -267,11 +267,49 @@ grid->addWidget(btn9, 0, 2); grid->addWidget(btnDiv, 0, 3); // 行、列坐标
|
||||
<div class="concept-box">
|
||||
<h4>组装思路</h4>
|
||||
<ul>
|
||||
<li>数字/运算符按钮(上午的 <code>button_creation</code>)+ 点击信号槽(刚学的三种写法)
|
||||
+ <code>QGridLayout</code> 脚手架排键盘 + <code>QLabel</code>/<code>QLineEdit</code> 显示结果。</li>
|
||||
<li>数字/运算符按钮(上午的 <code>button_creation</code>)+ 点击信号槽(刚学的两种写法:
|
||||
lambda+context 批量绑定数字/运算符键,成员函数指针绑定等号/清空/退格)
|
||||
+ <code>QGridLayout</code> 脚手架排键盘 + <code>QLineEdit</code> 显示结果。</li>
|
||||
<li>项目 = 已学知识点的组装——这是 Day5 综合案例和 Day6–10 项目的预演。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><small>教师完整参考实现(现场先跑成品,再拆代码):
|
||||
<a class="filelink" target="_blank" href="../examples/calculator/qt_calculator.cpp">examples/calculator/qt_calculator.cpp</a>
|
||||
(<a class="filelink" target="_blank" href="../examples/calculator/README.md">README</a>,
|
||||
<code>QT_QPA_PLATFORM=offscreen tools/run_qt.sh qt_calculator</code> 自测 5 组用例)。
|
||||
<b>课上不要直接展示源码给学生抄</b>——讲思路,学生自己实现(任务卡 2)。</small></p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>★ 番外:Qt Designer 表单版对照 <span class="tag tag-lecture">讲</span></h3>
|
||||
<div class="concept-box">
|
||||
<h4>核心概念</h4>
|
||||
<ul>
|
||||
<li>界面还能用 <b>Qt Designer</b> 拖控件生成 <code>.ui</code> 表单(纯 XML),
|
||||
<code>uic</code> 编译期翻译成 <code>ui_xxx.h</code>,<code>setupUi(this)</code>
|
||||
一次建好控件树——业务逻辑(<code>onDigit</code>/<code>onOperator</code>……)
|
||||
与代码布局版<b>一字不差</b>,换的只是"界面从哪来"。</li>
|
||||
<li><code>setupUi()</code> 内部会 <code>connectSlotsByName(this)</code>:类里若有
|
||||
<code>on_<objectName>_<signal>()</code> 槽会被<b>自动连接</b>——这是
|
||||
信号槽之外、Designer 工作流特有的第三种"连接方式"。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pitfall-box">
|
||||
<h4>常见的坑</h4>
|
||||
<ul>
|
||||
<li>把表单里按钮 <code>objectName</code> 从 <code>btnClear</code> 改成
|
||||
<code>btnReset</code>:<code>on_btnClear_clicked()</code> 不报编译错误、不报运行时
|
||||
错误,只是从此再也不会被调用——静默失败坑点家族的第三个成员(前两个:旧
|
||||
<code>SIGNAL()/SLOT()</code> 字符串语法、重复 <code>connect</code>)。
|
||||
本参考实现故意改用显式 <code>connect()</code> 规避这个坑。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p><small>对照实现:<a class="filelink" target="_blank"
|
||||
href="../examples/calculator_designer/qt_calculator_designer.cpp">examples/calculator_designer/qt_calculator_designer.cpp</a>
|
||||
+ <a class="filelink" target="_blank" href="../examples/calculator_designer/calculator_designer.ui">calculator_designer.ui</a>
|
||||
(<a class="filelink" target="_blank" href="../examples/calculator_designer/README.md">README</a>)——
|
||||
快速原型/界面调整用 Designer 更直观;控件数量随数据动态变化(如 Day5 表格行)
|
||||
必须手写代码搭建,两条路线按场景选,不是谁取代谁。</small></p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@@ -294,6 +332,9 @@ grid->addWidget(btn9, 0, 2); grid->addWidget(btnDiv, 0, 3); // 行、列坐标
|
||||
<dd><a class="filelink" target="_blank" href="../../../p03/ch03/button_creation.cpp">p03/ch03/button_creation.cpp</a> ·
|
||||
<a class="filelink" target="_blank" href="../../../p03/ch04/custom_signal_slot.cpp">p03/ch04/custom_signal_slot.cpp</a> ·
|
||||
<a class="filelink" target="_blank" href="../../../p03/ch08/custom_widget.cpp">p03/ch08/custom_widget.cpp</a>(布局参考)</dd>
|
||||
<dt>教师答案(不下发)</dt>
|
||||
<dd><a class="filelink" target="_blank" href="../examples/calculator/qt_calculator.cpp">examples/calculator/</a> ——
|
||||
验收时用同一组用例(7+3、6÷0、4.5+0.5、连续按运算符)现场提问对照</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user