下载地址:https://download.youkuaiyun.com/download/GameStrategist/12717944
简略说明:这不能算作一个可以放到简历上的项目
核心:利用 help 帮助手册查看预设函数,感觉英语好上手会很快;
机制:信号与槽
设计模式:模型 - 视图 - 控制器(MVC)(实际应用开发会分工,不会一个人全做)
- 模型:应用程序对象。
- 视图:屏幕演示。
- 控制器:定义了用户界面响应用户输入的方式。
目录:
一.完成添加学生的功能界面
-
1.+New Project,记得设置名称和文件目录等都不要出现中文字样
设置类名为addStu,且继承 QDialog(QDialog类是对话框窗口的基类)

-
2.界面参数设置。(小项目 ui 界面直接设置,也可以利用坐标函数来设置)
2.1 ui 界面 geometry控件 宽度350 高度480 (界面是以像素点为单位)
2.2 ui 界面 选择控件如下所示
Display Widgets: Label 七个 (欢迎标题,姓名,学号,性别,年龄,院系,兴趣,)
Input Widgets: Line Edit 两个(姓名,学号)
单选按钮 Buttons:Radio Button 两个(性别)
下拉列表Input Widgets:Conmbo Box 两个(年龄,院系)
多选按钮 Buttons:Check Box 四个 (兴趣)
确定按钮 取消按钮 Buttons:Push Button 两个
目前随意摆放,有个大概样子就可以了。

2.3 优化界面 通过两个控件 Layouts 和 Spacers(原则:由小至大,逐个布局)
如上图所示,每个小布局 水平布局 构成一个一个小的 layout (有关联的按住 Ctrl 点击就行)
“兴趣”右侧四个按钮需要先 栅格布局 再和 “兴趣” 进行水平布局
全部布局完成后,点击 垂直布局,此时结果如下:

现在的界面的对比度还是有问题,比如 文字 和 输入框 一个短一个长 很别扭
点击类似姓名这一小的 layout 注意是 layout
点击右侧会出现如下图所示,我们要做的就是修改 layoutStretch (控件按比例扩大缩小)

修改控件比例也可以选择右上角的侧面栏入手

layout 的参数大致为 1,8 和 1,4,4 觉得长了就用一个弹簧来纠正一下

简单运行一下,发现的确与想象中还是有差距的

原因是现在的 “添加学生”控件 是独立的,可以理解为会自适应界面大小
解决方案:1.将“添加学生”控件,也就是 label 中的 sizePollcy 中的垂直策略修改为 Fixed
(label 的高度无法改变,这样就能正常显示了)

接下来修改一下 label 字体的显示 (QLabel )

字大点(QWidget),笔者用styleSheet比较多

目前基本界面就可以确定了,然后开始修改 “各个控件” 的名称,要开始利用信号与槽机制了

姓名: le_name
学号:le_id
男:rbtn_male
女:rntn_fmale
年龄:cbb_age
院系:cbb_yx
二.细化界面,完成事件驱动
什么是事件驱动? 你点击一个按钮触发一个事件,这就是事件驱动。
(所有的事件结束后,需要点击 “确定按钮” 保存,所以确定就是事件驱动)
如何从控件中获取信息,首先先看控件有没有text,有就获取。(text内容属于QString)
还是利用 help手册,学习我们会用到的窗口。(QMessageBox消息对话框)
不想看英文,直接翻到下面看这种有代码的 demo,理解起来会很快。

我们的目的是给用户一个选择
// 1.新建对象
QMessageBox msgBox;
// 2.配置文件
//设置输出信息
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
//利用预设宏 设置消息框的按钮
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
//设置默认按钮
msgBox.setDefaultButton(QMessageBox::Save);
// 3.显示并返回一个值 可以知道是哪个按钮点击的
int ret = msgBox.exec();
现象如下图所示
稍加修改
msgBox.setText("请确认信息.");
msgBox.setInformativeText(name+'\n'+ id);
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
得到如下图所示结构

但是 ret 这个返回值是干什么的?
答 : 可以利用switch case来判断是哪个按钮
switch (ret) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
}
下图为help手册的demo:

但现在这个还不符合我们的需求,我们想要的是带有中文字样的按钮。
那么如何设置按钮为中文呢 ?(如上使用的按钮名称是预设的默认静态标准按钮)
直接修改成中文,编译会报错;
所以我们需要添加新的按钮,查询help手册,开头就是 addButton 函数
但是要中文与

这篇博客介绍了如何使用C/C++和QT框架开发一个简单的学生管理系统,包括添加学生功能界面的实现,事件驱动的细化,以及文件保存。作者强调了信号与槽机制、模型-视图-控制器(MVC)设计模式在项目中的应用,并提供了逐步的实现过程。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



