#include "querystu.h"
#include "ui_querystu.h"
#include <QMessageBox>
#include <QDebug>
#include <QStringList>
queryStu::queryStu(QWidget *parent) :
QDialog(parent),
ui(new Ui::queryStu)
{
ui->setupUi(this);
if(readFromFile() == -1)
{
this->close();
QMessageBox::critical(this,"严重错误","文件打开失败,请重试","确定");
}
this->model = new QStandardItemModel;
setTitle();
this->ui->tableView->setModel(model);
}
queryStu::~queryStu()
{
delete ui;
}
int queryStu::readFromFile()
{
QFile file("stu.txt");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return -1;
}
QTextStream in(&file);
while(!in.atEnd())
{
QString line = in.readLine();
stu_lines.append(line);
}
file.close();
for(int i = 0;i < stu_lines.length();i++)
{
qDebug() << stu_lines.at(i).trimmed();;
}
return 0;
}
void queryStu::on_btn_search_clicked()
{
this->model->clear();
setTitle();
int index = this->ui->cbb_method->currentIndex();
QString cnt = this->ui->le_cnt->text();
doQuery(index,cnt);
}
void queryStu::doQuery(int index,QString cnt)
{
int row = 0;
for(int i = 0; i < stu_lines.length(); i++)
{
QString line = stu_lines.at(i);
line = line.trimmed();
QStringList subs = line.split(" ");
switch(index)
{
case 1:
if(cnt == subs.at(0))
{
disPlay(row++,subs);
}
break;
case 2:
if(cnt == subs.at(1))
{
disPlay(row++,subs);
}
break;
case 3:
if(cnt == subs.at(4))
{
disPlay(row++,subs);
}
break;
default:
break;
}
}
}
void queryStu::disPlay(int row,QStringList subs)
{
int i = 0;
for(i = 0; i < 5; i++)
{
this->model->setItem(row,i,new QStandardItem(subs.at(i)));
}
QString ins;
for(i = 5; i < subs.length(); i++)
{
ins += subs.at(i) + ',';
}
this->model->setItem(row,5,new QStandardItem(ins));
}
void queryStu::setTitle()
{
this->model->setHorizontalHeaderItem(0,new QStandardItem("姓名"));
this->model->setHorizontalHeaderItem(1,new QStandardItem("学号"));
this->model->setHorizontalHeaderItem(2,new QStandardItem("性别"));
this->model->setHorizontalHeaderItem(3,new QStandardItem("年龄"));
this->model->setHorizontalHeaderItem(4,new QStandardItem("院系"));
this->model->setHorizontalHeaderItem(5,new QStandardItem("兴趣"));
this->ui->tableView->setColumnWidth(0,100);
this->ui->tableView->setColumnWidth(1,150);
this->ui->tableView->setColumnWidth(2,50);
this->ui->tableView->setColumnWidth(3,50);
this->ui->tableView->setColumnWidth(4,100);
this->ui->tableView->setColumnWidth(5,150);
}
QT例程,有QQ界面,计算器,学生管理系统,秒表,打地鼠,包含源码和exe程序
需积分: 5 36 浏览量
2023-02-09
15:52:01
上传
评论
收藏 258KB ZIP 举报
墨迹默济
- 粉丝: 215
- 资源: 30
最新资源
- matlab中的算术运算符介绍
- 形势与政策-题库.xls
- 高效MySQL查询加速指南:索引策略、查询优化、性能调优,助力数据库管理员和开发者突破性能瓶颈
- ARM Limited 发布的《RealView 编译工具 4.0 版编译器参考指南》
- 《2024音视频技术发展报告》,由LiveVideoStack出品,旨在深入了解流媒体和RTC(实时通信技术)的从业情情况
- 2023-04-06-项目笔记 - 第一百二十五阶段 - 4.4.2.123全局变量的作用域-123 -2024.05.06
- 多维因素与学生辍学风险预测数据集
- MATLAB编程高效实战:涵盖核心数学、科学计算、数据可视化及算法应用,助力工程师与研究人员的必备函数代码集
- halcon 3D图像重建
- 现有student.txt和student-score.txt 将两个文件上传到hdfs上 使用Map/Reduce框架完成下面
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈