qt qtableview 刷新列表_qt中Qtableview的用法

本文详细介绍了如何使用QStandardItemModel和QTableView在Qt中创建和管理表格数据,包括添加表头、设置表格属性、动态添加行、设置数据显示样式等。此外,还涉及了如何设置单元格的对齐方式、颜色、字体等样式,以及通过QItemSelectionModel跟踪选择单元格的变化。文章还展示了如何从文本文件导入数据,并提供了添加、插入和删除行的方法,以及单元格格式设置的操作。
摘要由CSDN通过智能技术生成

QTableView常用于实现数据的表格显示。下面我们如何按步骤实现学生信息表格:

一 添加表头

//准备数据模型

QStandardItemModel *student_model = new QStandardItemModel();

student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));

student_model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("NO.")));

student_model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Sex")));

student_model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Age")));

student_model->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("College")));

//利用setModel()方法将数据模型与QTableView绑定

ui->student_tableview->setModel(student_model);

二 设置表格属性

//设置列宽不可变动,即不能通过鼠标拖动增加列宽

ui->student_tableview->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);

ui->student_tableview->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed);

ui->student_tableview->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed);

ui->student_tableview->horizontalHeader()->setResizeMode(3, QHeaderView::Fixed);

ui->student_tableview->horizontalHeader()->setResizeMode(4, QHeaderView::Fixed);

//设置表格的各列的宽度值

ui->student_tableview->setColumnWidth(0,100);

ui->student_tableview->setColumnWidth(1,100);

ui->student_tableview->setColumnWidth(2,100);

ui->student_tableview->setColumnWidth(3,100);

ui->student_tableview->setColumnWidth(4,100);

//默认显示行头,如果你觉得不美观的话,我们可以将隐藏

ui->student_tableview->verticalHeader()->hide();

//设置选中时为整行选中

ui->student_tableview->setSelectionBehavior(QAbstractItemView::SelectRows);

//设置表格的单元为只读属性,即不能编辑

ui->student_tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);

//如果你用在QTableView中使用右键菜单,需启用该属性

ui->tstudent_tableview->setContextMenuPolicy(Qt::CustomContextMenu);

三 动态添加行

在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动

//在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据)

student_model->setItem(0, 0, new QStandardItem(“张三"));

student_model->setItem(0, 1, new QStandardItem("20120202"));

student_model->setItem(0, 2, new QStandardItem("男"));

student_model->setItem(0, 3, new QStandardItem("18"));

student_model->setItem(0, 4, new QStandardItem("土木学院"));

四 设置数据显示的样式

//设置单元格文本居中,张三的数据设置为居中显示

student_model->item(0, 0)->setTextAlignment(Qt::AlignCenter);

student_model->item(0, 1)->setTextAlignment(Qt::AlignCenter);

student_model->item(0, 2)->setTextAlignment(Qt::AlignCenter);

student_model->item(0, 3)->setTextAlignment(Qt::AlignCenter);

student_model->item(0, 4)->setTextAlignment(Qt::AlignCenter);

//设置单元格文本颜色,张三的数据设置为红色

student_model->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0)));

student_model->item(0, 1)->setForeground(QBrush(QColor(255, 0, 0)));

student_model->item(0, 2)->setForeground(QBrush(QColor(255, 0, 0)));

student_model->item(0, 3)->setForeground(QBrush(QColor(255, 0, 0)));

student_model->item(0, 4)->setForeground(QBrush(QColor(255, 0, 0)));

//将字体加粗

student_model->item(0, 0)->setFont( QFont( "Times", 10, QFont::Black ) );

student_model->item(0, 1)->setFont( QFont( "Times", 10, QFont::Black ) );

student_model->item(0, 2)->setFont( QFont( "Times", 10, QFont::Black ) );

student_model->item(0, 3)->setFont( QFont( "Times", 10, QFont::Black ) );

student_model->item(0, 4)->setFont( QFont( "Times", 10, QFont::Black ) );

//设置排序方式,按年龄降序显示

student_model->sort(3, Qt::DescendingOrder);

Qt QStandardItemModel用法(超级详细)

QStandardItemModel 是标准的以项数据(item data)为基础的标准数据模型类,通常与 QTableView 组合成 Model/View 结构,实现通用的二维数据的管理功能。

本节介绍 QStandardltemModel 的使用,主要用到以下 3 个类:

QStandardItemModel:基于项数据的标准数据模型,可以处理二维数据。维护一个二维的项数据数组,每个项是一个 QStandardltem 类的变量,用于存储项的数据、字体格式、对齐方式等。

QTableView:二维数据表视图组件,有多个行和多个列,每个基本显示单元是一个单元格,通过 setModel() 函数设置一个 QStandardItemModel 类的数据模型之后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值