以下是 TD 4 – 使用现有类与图形界面 (IHM) 的中文翻译,保持原文结构与编号:
TP POO / 语言 C++ IF3 1/6 INSA GE
TD MOO : C++ / UML 第 4 次课 (共 6 次)
TD 4 – 使用现有类,图形界面 个人准备:掌握指针与继承,以及练习 2
本练习的目标是为 TD0 的练习 1 实现一个图形用户界面 (GUI)。
- 启动 QtCreator,选择 “新建项目”,然后选择 “Qt Gui Application”(或在 QtCreator 4.0 中选择 “Qt Widgets Application”),点击 “选择”。
- 在弹出的对话框中,输入项目名称和路径,点击 “下一步”。
- 选择构建配置(一般可保留默认),点击 “下一步”。
- 设置主窗口类名(可保留默认),点击 “下一步”。
- 选择版本控制系统(本次 TD 不需要),点击 “完成”。
创建完成后,QtCreator 会生成基础文件,界面大致如下: (此处略项目结构及示意图)
-
在左侧项目树点击 “Form”,双击
mainwindow.ui,切换到 Design 模式。 -
画面分为:
- 窗口预览
- 可用控件列表
- 选中控件属性面板
- 窗口控件层次结构
-
从控件列表中拖放一个 Label(标签) 和一个 PushButton(按钮) 到窗口预览中。
-
在属性面板中可修改控件的对象名称(Object Name)及其它属性。
-
确保窗口布局合理,如下图示例所示: (此处略示例图)
- 编译并运行应用程序,确保没有错误。
- 点击按钮时目前尚未关联任何事件处理,因此不会有响应。下一步将实现点击事件。
-
QtCreator 自动为每个拖放到窗口的控件,在
ui对象中生成对应成员指针。 -
每个控件都有多种事件(点击、悬停、释放等),以 slot 的形式提供。
- 右键点击 PushButton,选择 “Go to Slot”,然后选择
clicked()。 - 此时会在
MainWindow类中添加一个名为on_pushButton_clicked()的槽函数。
- 右键点击 PushButton,选择 “Go to Slot”,然后选择
-
在该函数中添加以下代码并运行程序:
QString txt("Hello les GE"); ui->label->setText(txt);
- 在主窗口中再添加两个 Double Spin Box(双精度旋转框)和一个 ComboBox(下拉框)。
- 实现 TD0 练习 1-b 中的四则运算(加、减、乘、除、取模)功能。
- 运算逻辑应写在单独的
.cpp文件中,不要将计算代码写在MainWindow类里。 - 程序界面示例如下: (此处略示例图)
提示:按下
F1可查看 Qt 各类及控件的帮助。
思考题:
- 在此项目中,您遇到了哪些编程难点?
- 您认为如何提高开发效率?
vector 类可动态、高效地管理任意类型的数组(如 double、char、Complexe 等),在创建时指定元素类型。完整文档见:
http://www.cplusplus.com/reference/vector/vector/
- 在提供的
TD_Ex2_main_TODO.cpp中,使用std::vector对象实现相同的加法操作。
- 为什么要对
vector对象使用引用传递? - 在引用传递时,
const关键字有什么作用?
- 调用
<algorithm>中的sort函数,实现升序排列。
- 可通过传入自定义比较器或使用
greater<>()实现降序排列。
vector类不支持向量间的算术运算,valarray类专为向量数学运算设计。 请使用valarray对象,重新完成 2-a、2-c 和 2-d 的功能。
文档参考: http://www.cplusplus.com/reference/vector/vector/
—— 结束 ——