C/C++ 基于QT实现粗糙的学生管理系统

下载地址:https://download.csdn.net/download/GameStrategist/12717944

简略说明:这不能算作一个可以放到简历上的项目
核心:利用 help 帮助手册查看预设函数,感觉英语好上手会很快;
机制:信号与槽
设计模式:模型 - 视图 - 控制器(MVC)(实际应用开发会分工,不会一个人全做)

  • 模型:应用程序对象。
  • 视图:屏幕演示。
  • 控制器:定义了用户界面响应用户输入的方式。

目录:

  • 一.完成添加学生的功能界面
  • 二.细化界面,完成事件驱动
      • Line Edit 优化
      • qline 的 Signals (搜索help手册)
      • 单选按钮 多选按钮 设置
      • 完成文件保存
  • 三.完成菜单选择窗口
      • 添加新窗口完成查找功能

一.完成添加学生的功能界面

  • 1.+New Project,记得设置名称和文件目录等都不要出现中文字样
    设置类名为addStu,且继承 QDialog(QDialog类是对话框窗口的基类)
    C/C++ 基于QT实现粗糙的学生管理系统_第1张图片

  • 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 	两个

目前随意摆放,有个大概样子就可以了。

C/C++ 基于QT实现粗糙的学生管理系统_第2张图片
2.3 优化界面 通过两个控件 Layouts 和 Spacers(原则:由小至大,逐个布局)
如上图所示,每个小布局 水平布局 构成一个一个小的 layout (有关联的按住 Ctrl 点击就行)
“兴趣”右侧四个按钮需要先 栅格布局 再和 “兴趣” 进行水平布局
全部布局完成后,点击 垂直布局,此时结果如下:
C/C++ 基于QT实现粗糙的学生管理系统_第3张图片
现在的界面的对比度还是有问题,比如 文字 和 输入框 一个短一个长 很别扭
点击类似姓名这一小的 layout 注意是 layout
点击右侧会出现如下图所示,我们要做的就是修改 layoutStretch (控件按比例扩大缩小)
C/C++ 基于QT实现粗糙的学生管理系统_第4张图片
修改控件比例也可以选择右上角的侧面栏入手
C/C++ 基于QT实现粗糙的学生管理系统_第5张图片
layout 的参数大致为 1,8 和 1,4,4 觉得长了就用一个弹簧来纠正一下
C/C++ 基于QT实现粗糙的学生管理系统_第6张图片
简单运行一下,发现的确与想象中还是有差距的
C/C++ 基于QT实现粗糙的学生管理系统_第7张图片
原因是现在的 “添加学生”控件 是独立的,可以理解为会自适应界面大小

解决方案:1.将“添加学生”控件,也就是 label 中的 sizePollcy 中的垂直策略修改为 Fixed
(label 的高度无法改变,这样就能正常显示了)
C/C++ 基于QT实现粗糙的学生管理系统_第8张图片
接下来修改一下 label 字体的显示 (QLabel )
在这里插入图片描述
字大点(QWidget),笔者用styleSheet比较多
在这里插入图片描述
目前基本界面就可以确定了,然后开始修改 “各个控件” 的名称,要开始利用信号与槽机制了
C/C++ 基于QT实现粗糙的学生管理系统_第9张图片

姓名: 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();

现象如下图所示C/C++ 基于QT实现粗糙的学生管理系统_第10张图片
稍加修改

msgBox.setText("请确认信息.");
msgBox.setInformativeText(name+'\n'+ id);
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);

得到如下图所示结构

你可能感兴趣的:(qt,c语言,c++)