#include "mainwindow.h"
#include "ui_mainwindow.h"
// 为一行的单元格创建Items行
void MainWindow::createItemsARow(int rowNo,QString Name,QString Sex,QDate birth,QString Nation,bool isPM,int score)
{
QTableWidgetItem *item;
QString str;
uint StudID=1001;
// -------------------------------------------------------
// 姓名
// -------------------------------------------------------
// 新建一个Item 设置单元格type为自定义的MainWindow::ctName
item=new QTableWidgetItem(Name,MainWindow::ctName);
// 文本对齐格式
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
// 学号 = 基数+ 行号
StudID +=rowNo;
// 设置studID为data
item->setData(Qt::UserRole,QVariant(StudID));
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colName,item);
// -------------------------------------------------------
// 性别
// -------------------------------------------------------
QIcon icon;
if (Sex=="男")
{
icon.addFile(":/image/boy.ico");
}
else
{
icon.addFile(":/image/girl.ico");
}
// 新建一个Item 设置单元格type为自定义的 MainWindow::ctSex
item=new QTableWidgetItem(Sex,MainWindow::ctSex);
item->setIcon(icon);
// 为单元格设置Item
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colSex,item);
// -------------------------------------------------------
// 出生日期
// -------------------------------------------------------
// 日期转换为字符串
str=birth.toString("yyyy-MM-dd");
// 新建一个Item 设置单元格type为自定义的 MainWindow::ctBirth
item=new QTableWidgetItem(str,MainWindow::ctBirth);
// 文本对齐格式
item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colBirth,item);
// -------------------------------------------------------
// 民族
// -------------------------------------------------------
// 新建一个Item 设置单元格type为自定义的 MainWindow::ctNation
item=new QTableWidgetItem(Nation,MainWindow::ctNation);
// 文本对齐格式
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colNation,item);
// -------------------------------------------------------
// 是否党员
// -------------------------------------------------------
// 新建一个Item 设置单元格type为自定义的 MainWindow::ctPartyM
item=new QTableWidgetItem("群众",MainWindow::ctPartyM);
// 文本对齐格式
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
if (isPM)
{
item->setCheckState(Qt::Checked);
}
else
{
item->setCheckState(Qt::Unchecked);
}
// 设置为黄色
item->setBackgroundColor(Qt::yellow);
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colPartyM,item);
// -------------------------------------------------------
// 分数
// -------------------------------------------------------
str.setNum(score);
//新建一个Item 设置单元格type为自定义的 MainWindow::ctPartyM
item=new QTableWidgetItem(str,MainWindow::ctScore);
// 文本对齐格式
item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
// 为单元格设置Item
ui->tableWidget->setItem(rowNo,MainWindow::colScore,item);
}
// 构造函数
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableWidget->clear();
// 设置表格默认不可编辑
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
// 初始化状态栏
labCellIndex = new QLabel("当前坐标: ",this);
labCellIndex->setMinimumWidth(250);
labCellType=new QLabel("单元格类型: ",this);
labCellType->setMinimumWidth(200);
labStudID=new QLabel("选中的ID: ",this);
labStudID->setMinimumWidth(200);
// 将初始化的标签添加到底部状态栏上
ui->statusbar->addWidget(labCellIndex);
ui->statusbar->addWidget(labCellType);
ui->statusbar->addWidget(labStudID);
}
// 析构函数
MainWindow::~MainWindow()
{
delete ui;
}
// 当前选择单元格发生变化时触发响应事件,也就是将底部状态栏标签设置
void MainWindow::on_tableWidget_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
{
Q_UNUSED(previousRow);
Q_UNUSED(previousColumn);
// 显示行与列的变化数值
std::cout << "currentRow = " << currentRow << " currentColumn = " << currentColumn << std::endl;
std::cout << "pre Row = " << previousRow << " pre Column = " << previousColumn << std::endl;
// 获取当前单元格的Item
QTableWidgetItem *item = ui->tableWidget->item(currentRow,currentColumn);
if(item == NULL)
return;
// 设置单元格坐标
labCellIndex->setText(QString::asprintf("当前坐标: %d 行 | %d 列",currentRow,currentColumn));
// 设置单元格类型
int cellType = item->type();
labCellType->setText(QString::asprintf("单元格类型: %d",cellType));
// 设置单元格选中学生的ID号
item = ui->tableWidget->item(currentRow,MainWindow::colName); // 取当前行第1列的单元格的item
int ID = item->data(Qt::UserRole).toInt(); // 读取用户自定义数据
labStudID->setText(QString::asprintf("选中的ID: %d",ID));
}
// 设置表头的实现
void MainWindow::on_pushButton_clicked()
{
QTableWidgetItem *headerItem;
QStringList headerText_Row,headerText_Col;
headerText_Row << "姓 名" << "性 别" << "出生日期" << "民 族" << "分数" << "是否党员";
//headerText_Col << "第一行" << "第二行";
// 设置为水平表头
ui->tableWidget->setHorizontalHeaderLabels(headerText_Row);
// 设置垂直表头
//ui->tableWidget->setVerticalHeaderLabels(headerText_Col);
// 另一种方式: 通过循环设置
ui->tableWidget->setColumnCount(headerText_Row.count()); // 列数设置为与headerText_Row的列相等
for (int i=0;i<ui->tableWidget->columnCount();i++) // 列编号从0开始
{
headerItem=new QTableWidgetItem(headerText_Row.at(i)); // headerText.at(i) 获取headerText的i行字符串
QFont font=headerItem->font(); // 获取原有字体设置
font.setBold(true); // 设置为粗体
font.setPointSize(8); // 设置字体大小
headerItem->setTextColor(Qt::black); // 设置字体颜色
headerItem->setFont(font); // 设置字体
ui->tableWidget->setHorizontalHeaderItem(i,headerItem); // 设置表头单元格的Item
}
}
// 初始化表格元素
void MainWindow::on_pushButton_4_clicked()
{
QString strName,strSex;
bool isParty=false;
QDate birth;
birth.setDate(1997,10,7); // 初始化一个日期
ui->tableWidget->clearContents(); // 只清除工作区中的内容,不清除表格
int Rows=ui->tableWidget->rowCount(); // 数据区行数
// 循环添加行数据
for (int i=0;i<Rows;i++)
{
strName=QString::asprintf("学生%d",i); // 学生姓名
if ((i % 2)==0) // 分奇数,偶数行设置性别,及其�
TableWidget.zip
需积分: 0 79 浏览量
2023-12-29
08:59:05
上传
评论
收藏 34KB ZIP 举报
微软技术分享
- 粉丝: 5w+
- 资源: 130
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈