My Graduation’s project:StudentClassMaintain module

一步步学Qt,第八天-使用QPrinter打印多页文档 一步步学Qt,第八天-使用QPrinter打印多页文档 使用文档打印,在很多的地方都有应用,办公室里可能需要用此来将编辑好的文档打印出来。当然遇到多页文档的打印时,就程序设计来说,就设计到分页的问题,怎么样的分页才是合理的呢。Qt中使用QTextDocument的的方式可以自动 阅读详情
#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学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看了qt3中QListView和QListViewItem手册,在Eva 阅读详情

相关推荐

一步步学Qt,第七天-QPainter绘图QRect定位问题

一步步学Qt,第七天-QPainter绘图QRect定位问题 昨天工作室没电,现在才能继续Qt。 一直对Qpainter的绘图功能不断研究中,很多的不明白,因为他的工作往往就是几个class的综合,看一个demo,在对整个demo的结构不是很明白的前提下,这个是很头疼

Qicz的学习笔记 博客新址:izcqi.com 3373

Qt学习笔记,设置QTabWidget的TabBar的属性

Qt学习笔记,设置QTabWidget的TabBar的属性 ui->tabWidget->setStyleSheet("QTabBar::tab { height: 25px; width:25px;color: white; padding: 0px;

Qicz的学习笔记 博客新址:izcqi.com 8121

一步步学Qt.第二天-续集-mysql连接成功

不断辛苦,不断尝试,这把才将mysql的驱动ok了. 写了一个小小的demo #include #include #include #include #include int main(int argc,char *argv[]){ QApplica

Qicz的学习笔记 博客新址:izcqi.com 2858

Qt学习笔记,修改指定图片的大小,转换为QIcon用于QPushButton等控件

Qt学习笔记,修改指定图片的大小,转换为QIcon用于QPushButton等控件 QString imagepath = ":/images/btn.png"; QPixmap image0(imagepath); QPixmap image =

Qicz的学习笔记 博客新址:izcqi.com 7635

一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题

一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题 今天写了一个MainWidow,但是遇到的问题,很有意思,先看效果吧:(期望的效果) 结果我的结果是: 也就是,资源文件没有加载. 就在此刻,我突然的冒出来,

Qicz的学习笔记 博客新址:izcqi.com 1701

QT的学习第四部分

本文介绍Qt与Linux V4L2框架下摄像头及音视频处理实现。基于Qt的QCamera与QCameraViewfinder类可便捷实现预览与拍照,需在pro文件添加multimedia和multimediawidgets插件。通过V4L2框架可深入控制摄像头参数、缓冲队列及图像采集流程,实现高精度视频捕获。结合FFmpeg与mplayer工具,可在Linux下完成音视频播放、格式转换与流媒体处理。整体涵盖从硬件接口到应用层开发的完整技术链路,适用于嵌入式多媒体系统开发。

SeanTim0404的博客 189

Qt学习笔记,使用QDir获取当前目录下所有目录和文件信息

Qt学习笔记,使用QDir获取当前目录下所有目录和文件信息 #include #include #include int main(int argc,char *argv[]){ QApplication app(argc,argv);

Qicz的学习笔记 博客新址:izcqi.com 7471

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

weixin_44617902的博客 1311

Qt学习笔记,QWidget和QMainWindow新认识

Qt学习笔记,QWidget和QMainWindow新认识 学习Qt这么久了,今天才发现,原来QWidget不是我想象的那种东西。居然给她设置背景是那么的不方便的。在这里得到的方式如下: //在Qt3中,使用QWidget::setBackgroundPixm

Qicz的学习笔记 博客新址:izcqi.com 5748

RT-Thread实战:手把手教你用STM32F04ZGT6通过SPI驱动BMI088(附完整工程)

本文详细介绍了如何使用RT-Thread操作系统在STM32F04ZGT6上通过SPI接口驱动BMI088高性能6轴惯性传感器(包含陀螺仪和加速度计)。从硬件连接到软件配置,再到数据采集与处理,提供了完整的开发指南和优化技巧,帮助开发者快速实现精确的姿态测量功能。

kappa的博客 236

Ansys Fluent DPM模型实战:旋风分离器颗粒轨迹仿真全流程解析(附案例文件)

本文详细解析了使用Ansys Fluent中的离散相模型进行旋风分离器颗粒轨迹仿真的全流程。从几何简化、网格策略到物理模型界定,重点阐述了DPM模型的关键设置步骤,包括单向耦合假设、颗粒注入与受力配置,并提供了结果分析与优化方法,帮助工程师精准模拟气固分离过程,提升设计效率。

sunny的博客 703

一步步学Qt,第五天-Qt这样的小小差异你发现了多少

一步步学Qt,第5天-Qt这样的小小差异你发现了多少 今天下了一个小小得程序,一个小小的文件目录浏览器。在看到这个地方的时候,看到了Qt你们的Model/View模式,原本小弟疑问这个玩意没有什么模式,自己借用其他的设计模式应该可以的。没想到Qt自己有自己的一套模式。不

Qicz的学习笔记 博客新址:izcqi.com 2900

避坑指南:SpringBoot对接拉卡拉支付常见问题与解决方案(含SDK 1.0.6配置技巧)

本文是一份SpringBoot项目对接拉卡拉支付的实战避坑指南。针对SDK 1.0.6版本,详细剖析了从依赖管理、多环境配置、SDK初始化到支付请求构建、回调验签及生产监控的全流程常见问题,并提供了经过验证的解决方案与配置技巧,旨在帮助开发者高效、稳定地集成支付功能。

k5l6m的博客 330

Qt学习笔记,Qt程序架构设计要旨

Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中。自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3D等等,但这些会在接下来的工作里不断的接触和深入。现在学习Qt的心得就

Qicz的学习笔记 博客新址:izcqi.com 2824

状态机设计与实现( stm32小车避障为例)

本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。

2302_80219536的博客 1046

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 793

一步步学Qt,第九天-Q”STL”与STL-再看C++

一步步学Qt,第九天-Q”STL”与STL-再看C++ 第一次在一步步学Qt中看到了C++的图了,或许自己也都忘记了Qt是基于C++的一个拓展的框架。不过Qt与C++的关系是莫大的,Qt她的很多的思想都引用于C++,在 一步步学Qt,第五天-Qt学习小结-Qt工作机制 也有

Qicz的学习笔记 博客新址:izcqi.com 1745

AI自动化流程在金融风控中的3个典型案例

AI自动化风控流程全流程自动化:最小化人工干预,实现从数据输入到决策输出的闭环自适应学习:通过持续数据反馈实现模型自动迭代优化实时决策能力:满足毫秒级(支付风控)至分钟级(信贷审批)的响应需求多模态数据融合:整合结构化、非结构化和实时流数据智能决策解释:自动生成符合监管要求的决策解释人机协同机制:在高风险场景下实现AI与人类专家的协同决策实施后关键绩效指标(KPI)变化指标实施前实施后改进幅度平均审批时间3.2天4.7分钟-99.7%自动审批率15%85%+467%

架构师的AI之路,分享AI应用开发架构的学习与实践。 1535

一步步学Qt,第九天-Q"STL"与STL-Qvector,vector

一步步学Qt,第九天-Q"STL"与STL-Qvector,vector 这个部分或许没有代码出现,更多的是文字分析,即使会出现也可能就是很简短的部分。今天主要来分析和对比一下Q”STL”与C++的STL,主要讲解他们各自在定义和使用的区别,不仅仅是学习C++的提升也是对Q

Qicz的学习笔记 博客新址:izcqi.com 1735

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

一步步学Qt,第一天

今天是Qt的第一天,越到了很多的问题,不过还好都已经解决了。下面记录一下: qt incomplete type 这个问题,我刚遇到的时候,以后是自己疏忽没有写好code,后来去参考demo程序,发现自己没有错误。不错那个提示却一再的出现。于是,google,

Qicz的学习笔记 博客新址:izcqi.com 1656

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析

本文详细介绍了Qt中的QTableWidget控件和QTableWidgetItem类,它们是处理二维表格数据的核心组件。主要内容包括: QTableWidgetItem类详解: 核心方法:row()/column()获取位置,setText()/text()设置文本,setIcon()设置图标 样式控制:setTextAlignment()对齐方式,setFont()字体,setSizeHint()尺寸 QTableWidget核心操作: 单元格管理:item()获取单元格,setItem()设置单元格

2503_92929084的博客 106

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Qt QBuffer 详解:内存缓冲区读写与实战用法

QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 553

Qt_03界面类型

Qt的界面类型

u012660296的博客 190

Qt 内嵌页面能显示、按钮调用桌面功能时报 Qt6WebChannel.dll?查桥接层

Qt 桌面程序里的内嵌 HTML 面板能显示静态内容,但点击“读取本地任务”才报 Qt6WebChannel.dll。先保存构建清单,用脱敏测试任务重现;页面能加载不等于 JavaScript 与 C++ 的桥接层也完整。应先确认准确弹窗,再排查模块和页面脚本。 ## Qt6WebChannel.dll 的来源与桥接组件版本 查看发行包里 Qt6Core.d

2301_78581598的博客 204
上一篇: 透
下一篇: taskmgr
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值