#include "studentclassinfomaintain.h"
#include "ui_studentclassinfomaintain.h"
#include "serverstyle.h"
StudentClassInfoMaintain::StudentClassInfoMaintain(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::StudentClassInfoMaintain)
{
ui->setupUi(this);
init();
createActions();
}
StudentClassInfoMaintain::~StudentClassInfoMaintain()
{
delete ui;
studentItemList.clear();
classItemList.clear();
}
void StudentClassInfoMaintain::setClassMaintainItem(TeachingRoomClass *trClass)
{
QString trClassName = trClass->getClassName();//get class Name
QString trClassStudentsCount = trClass->getClassStudentsCount();
QTreeWidgetItem *currentClass = new QTreeWidgetItem(ui->classList,CLASS_ITEM);
//set text
QString classInfo = trClassName +" "+trClassStudentsCount+CLASSCOUNTUNIT;
currentClass->setText(0,classInfo);
classItemList.insert(classInfo,trClass);
}
//set root item
QTreeWidgetItem* StudentClassInfoMaintain::setStudentRootItem(TeachingRoomClass *trClass)
{
QString trClassName = trClass->getClassName();//get class Name
QTreeWidgetItem *currentClass = new QTreeWidgetItem(ui->studentsList,CLASS_ITEM);
//set text
currentClass->setText(0,trClassName);
currentClass->setExpanded(true);
return currentClass;
}
//set root's child
void StudentClassInfoMaintain::setStudentMaintainItem(QTreeWidgetItem *root,TeachingRoomStudents *trStudent)
{
QString trStudentName = trStudent->getStudentName();//get student Name
QTreeWidgetItem *currentStudent = new QTreeWidgetItem(root,STUDENT_ITEM);
//set text
currentStudent->setText(0,trStudentName);
//add student to studentitemlist
studentItemList.insert(trStudentName,trStudent);
}
//conn the signal and slot
void StudentClassInfoMaintain::createActions()
{
//change the maintain theme
connect(ui->chooseMaintain,SIGNAL(currentChanged(int)),
this,SLOT(setCurrentIndex(int)));
// reget the data from database
connect(ui->refreshBtn,SIGNAL(clicked()),
this,SIGNAL(refreshData()));
//set current class in class maintain
connect(ui->classList,SIGNAL(itemClicked(QTreeWidgetItem*,int)),
this,SLOT(setCurrentClassInClassMaintain(QTreeWidgetItem*,int)));
//set current class in student maintain
connect(ui->studentsList,SIGNAL(itemClicked(QTreeWidgetItem*,int)),
this,SLOT(setCurrentClassInStudentMaintain(QTreeWidgetItem*,int)));
//edit class
connect(ui->editBtn,SIGNAL(clicked()),
this,SLOT(editClassInfoSlot()));
//add new class
connect(ui->newBtn,SIGNAL(clicked()),
this,SLOT(addClassInfoSlot()));
}
//clear the list
void StudentClassInfoMaintain::clearList()
{
ui->classList->clear();
ui->studentsList->clear();
studentItemList.clear();
classItemList.clear();
ui->className->clear();
}
//init data
void StudentClassInfoMaintain::init()
{
//unused
currentIndex = 0;
tempIndex = 0;
studentItemList.clear();
classItemList.clear();
//set style
ServerStyle *style = new ServerStyle();
style->styleNoWork(this);
//set column width
setColumnWidth();
}
void StudentClassInfoMaintain::setColumnWidth()
{
ui->studentInfoWidget->setColumnWidth(TABLEWIDGETITEMROW,TABLEWIDGETITEMWIDTH);
}
//set student list rows
void StudentClassInfoMaintain::setStudentRows(int rows)
{
ui->studentInfoWidget->setRowCount(rows);
}
//add student to the student table widget
void StudentClassInfoMaintain::addStudentItem(int row, TeachingRoomStudents *student)
{
QTableWidgetItem *studentIDItem = new QTableWidgetItem(student->getStudentID());
studentIDItem->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);//hcenter and buttom
ui->studentInfoWidget->setItem(row,0,studentIDItem);
QTableWidgetItem *studentNameItem = new QTableWidgetItem(student->getStudentName());
studentNameItem->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);//hcenter and buttom
ui->studentInfoWidget->setItem(row,1,studentNameItem);
QTableWidgetItem *studentClassItem = new QTableWidgetItem(student->getClassMajor());
studentClassItem->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);//hcenter and buttom
ui->studentInfoWidget->setItem(row,2,studentClassItem);
QTableWidgetItem *studentClassCountItem = new QTableWidgetItem(student->getClassCount());
studentClassCountItem->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);//hcenter and buttom
ui->studentInfoWidget->setItem(row,3,studentClassCountItem);
QTableWidgetItem *studentGradeItem = new QTableWidgetItem(student->getStudentScore());
studentGradeItem->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);//hcenter and buttom
ui->studentInfoWidget->setItem(row,4,studentGradeItem);
}
//init class item
void StudentClassInfoMaintain::initClassItemList()
{
QList<TeachingRoomClass*> classList = classItemList.values();
int classCount = classList.size();
for(int index=0; index<classCount; index++){
QString className = classList.at(index)->getClassName();
ui->className_2->addItem(className);
}
}
//change the toolbox index
void StudentClassInfoMaintain::setCurrentIndex(int index)
{
if(tempIndex==1 && currentIndex==0){
currentIndex=1;
tempIndex=0;
}
if(index==1 && currentIndex==0){
currentIndex = 0;
}
if(index==1 && currentIndex==1){
currentIndex = 1;
}
if(index==0 && currentIndex==0){
currentIndex=0;
}
if(index==0 && currentIndex==1){
tempIndex = 1;
currentIndex=0;
}
ui->stackedWidget->setCurrentIndex(index+currentIndex);
}
//set current class
void StudentClassInfoMaintain::setCurrentClassInClassMaintain(QTreeWidgetItem *item,int column)
{
ui->className->setReadOnly(true);
ui->studentCount->setReadOnly(true);
ui->submitBtn->setEnabled(false);
TeachingRoomClass *currentClass = classItemList.value(item->text(column));
ui->className->setText(currentClass->getClassName());
ui->studentCount->setValue(currentClass->getClassStudentsCount().toInt());
}
void StudentClassInfoMaintain::setCurrentClassInStudentMaintain(QTreeWidgetItem *item, int column)
{
if(item->type() == CLASS_ITEM){//current click item txt :class name
ui->stackedWidget->setCurrentIndex(1);
currentIndex = 0;
emit clickRootItem(item->text(column));
}
else{//show maintain student
ui->stackedWidget->setCurrentIndex(2);
currentIndex = 1;
//set current item edit icon
item->setIcon(0,QIcon(":/server/theme/edit"));
studentMaintain(item->text(column));
}
}
//edit current class info
void StudentClassInfoMaintain::editClassInfoSlot()
{
ui->className->setReadOnly(false);
ui->studentCount->setReadOnly(false);
ui->submitBtn->setEnabled(true);
}
//add new class info
void StudentClassInfoMaintain::addClassInfoSlot()
{
//setting title
ui->title->setText(ADDCLASSINFOTITLE);
//setting class name
ui->className->setText(NEWCLASSNAME);
ui->className->setFocus();
ui->className->setReadOnly(false);
//setting class count
ui->studentCount->setValue(NEWCLASSCOUNT);
ui->studentCount->setReadOnly(false);
ui->submitBtn->setEnabled(true);
}
void StudentClassInfoMaintain::studentMaintain(QString currentStudent)
{
ui->studentName->setText(currentStudent);
TeachingRoomStudents *currentstudent = studentItemList.value(currentStudent);
ui->studentID->setText(currentstudent->getStudentID());
QString className = currentstudent->getClassMajor();
ui->className_2->setCurrentIndex(ui->className_2->findText(className));
ui->classCount->setValue(currentstudent->getClassCount().toInt());
ui->studentGrade->setValue(currentstudent->getStudentScore().toInt());
}
相关推荐
一步步学Qt,第七天-QPainter绘图QRect定位问题
一步步学Qt,第七天-QPainter绘图QRect定位问题 昨天工作室没电,现在才能继续Qt。 一直对Qpainter的绘图功能不断研究中,很多的不明白,因为他的工作往往就是几个class的综合,看一个demo,在对整个demo的结构不是很明白的前提下,这个是很头疼
Qt学习笔记,设置QTabWidget的TabBar的属性
Qt学习笔记,设置QTabWidget的TabBar的属性 ui->tabWidget->setStyleSheet("QTabBar::tab { height: 25px; width:25px;color: white; padding: 0px;
一步步学Qt.第二天-续集-mysql连接成功
不断辛苦,不断尝试,这把才将mysql的驱动ok了. 写了一个小小的demo #include #include #include #include #include int main(int argc,char *argv[]){ QApplica
Qt学习笔记,修改指定图片的大小,转换为QIcon用于QPushButton等控件
Qt学习笔记,修改指定图片的大小,转换为QIcon用于QPushButton等控件 QString imagepath = ":/images/btn.png"; QPixmap image0(imagepath); QPixmap image =
一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题
一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题 今天写了一个MainWidow,但是遇到的问题,很有意思,先看效果吧:(期望的效果) 结果我的结果是: 也就是,资源文件没有加载. 就在此刻,我突然的冒出来,
QT的学习第四部分
本文介绍Qt与Linux V4L2框架下摄像头及音视频处理实现。基于Qt的QCamera与QCameraViewfinder类可便捷实现预览与拍照,需在pro文件添加multimedia和multimediawidgets插件。通过V4L2框架可深入控制摄像头参数、缓冲队列及图像采集流程,实现高精度视频捕获。结合FFmpeg与mplayer工具,可在Linux下完成音视频播放、格式转换与流媒体处理。整体涵盖从硬件接口到应用层开发的完整技术链路,适用于嵌入式多媒体系统开发。
Qt学习笔记,使用QDir获取当前目录下所有目录和文件信息
Qt学习笔记,使用QDir获取当前目录下所有目录和文件信息 #include #include #include int main(int argc,char *argv[]){ QApplication app(argc,argv);
ECB oracle——attack
基于ECB oracle的攻击方案前言什么是ECB方案步骤1.确定块大小和明文大小2.暴力破解求明文脚本代码 前言 参考文章:Breaking ECB by prepending your own message. 环境地址:ECB oracle 什么是ECB 分组密码中AES的一种模式(其他还有:CBC、ECB、CTR、OCF、CFB)如图每一块加密是分开的。 方案步骤 1.确定块大小和明文大小 先用一个字符"a"去encrypt返回32个字节的数据(64位16进制)依次用"aa",“aaa”…去en
Qt学习笔记,QWidget和QMainWindow新认识
Qt学习笔记,QWidget和QMainWindow新认识 学习Qt这么久了,今天才发现,原来QWidget不是我想象的那种东西。居然给她设置背景是那么的不方便的。在这里得到的方式如下: //在Qt3中,使用QWidget::setBackgroundPixm
RT-Thread实战:手把手教你用STM32F04ZGT6通过SPI驱动BMI088(附完整工程)
本文详细介绍了如何使用RT-Thread操作系统在STM32F04ZGT6上通过SPI接口驱动BMI088高性能6轴惯性传感器(包含陀螺仪和加速度计)。从硬件连接到软件配置,再到数据采集与处理,提供了完整的开发指南和优化技巧,帮助开发者快速实现精确的姿态测量功能。
Ansys Fluent DPM模型实战:旋风分离器颗粒轨迹仿真全流程解析(附案例文件)
本文详细解析了使用Ansys Fluent中的离散相模型进行旋风分离器颗粒轨迹仿真的全流程。从几何简化、网格策略到物理模型界定,重点阐述了DPM模型的关键设置步骤,包括单向耦合假设、颗粒注入与受力配置,并提供了结果分析与优化方法,帮助工程师精准模拟气固分离过程,提升设计效率。
一步步学Qt,第五天-Qt这样的小小差异你发现了多少
一步步学Qt,第5天-Qt这样的小小差异你发现了多少 今天下了一个小小得程序,一个小小的文件目录浏览器。在看到这个地方的时候,看到了Qt你们的Model/View模式,原本小弟疑问这个玩意没有什么模式,自己借用其他的设计模式应该可以的。没想到Qt自己有自己的一套模式。不
避坑指南:SpringBoot对接拉卡拉支付常见问题与解决方案(含SDK 1.0.6配置技巧)
本文是一份SpringBoot项目对接拉卡拉支付的实战避坑指南。针对SDK 1.0.6版本,详细剖析了从依赖管理、多环境配置、SDK初始化到支付请求构建、回调验签及生产监控的全流程常见问题,并提供了经过验证的解决方案与配置技巧,旨在帮助开发者高效、稳定地集成支付功能。
Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中。自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3D等等,但这些会在接下来的工作里不断的接触和深入。现在学习Qt的心得就
状态机设计与实现( stm32小车避障为例)
本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。
手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真
温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。
一步步学Qt,第九天-Q”STL”与STL-再看C++
一步步学Qt,第九天-Q”STL”与STL-再看C++ 第一次在一步步学Qt中看到了C++的图了,或许自己也都忘记了Qt是基于C++的一个拓展的框架。不过Qt与C++的关系是莫大的,Qt她的很多的思想都引用于C++,在 一步步学Qt,第五天-Qt学习小结-Qt工作机制 也有
AI自动化流程在金融风控中的3个典型案例
AI自动化风控流程全流程自动化:最小化人工干预,实现从数据输入到决策输出的闭环自适应学习:通过持续数据反馈实现模型自动迭代优化实时决策能力:满足毫秒级(支付风控)至分钟级(信贷审批)的响应需求多模态数据融合:整合结构化、非结构化和实时流数据智能决策解释:自动生成符合监管要求的决策解释人机协同机制:在高风险场景下实现AI与人类专家的协同决策实施后关键绩效指标(KPI)变化指标实施前实施后改进幅度平均审批时间3.2天4.7分钟-99.7%自动审批率15%85%+467%
一步步学Qt,第九天-Q"STL"与STL-Qvector,vector
一步步学Qt,第九天-Q"STL"与STL-Qvector,vector 这个部分或许没有代码出现,更多的是文字分析,即使会出现也可能就是很简短的部分。今天主要来分析和对比一下Q”STL”与C++的STL,主要讲解他们各自在定义和使用的区别,不仅仅是学习C++的提升也是对Q
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
一步步学Qt,第一天
今天是Qt的第一天,越到了很多的问题,不过还好都已经解决了。下面记录一下: qt incomplete type 这个问题,我刚遇到的时候,以后是自己疏忽没有写好code,后来去参考demo程序,发现自己没有错误。不错那个提示却一再的出现。于是,google,
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析
本文详细介绍了Qt中的QTableWidget控件和QTableWidgetItem类,它们是处理二维表格数据的核心组件。主要内容包括: QTableWidgetItem类详解: 核心方法:row()/column()获取位置,setText()/text()设置文本,setIcon()设置图标 样式控制:setTextAlignment()对齐方式,setFont()字体,setSizeHint()尺寸 QTableWidget核心操作: 单元格管理:item()获取单元格,setItem()设置单元格
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
Qt QBuffer 详解:内存缓冲区读写与实战用法
QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。
Qt_03界面类型
Qt的界面类型
Qt 内嵌页面能显示、按钮调用桌面功能时报 Qt6WebChannel.dll?查桥接层
Qt 桌面程序里的内嵌 HTML 面板能显示静态内容,但点击“读取本地任务”才报 Qt6WebChannel.dll。先保存构建清单,用脱敏测试任务重现;页面能加载不等于 JavaScript 与 C++ 的桥接层也完整。应先确认准确弹窗,再排查模块和页面脚本。 ## Qt6WebChannel.dll 的来源与桥接组件版本 查看发行包里 Qt6Core.d
3373



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



