一、Item-Views(Model-Based)
1、TableView
1.1 TableView控件功能
(表格视图)是一个强大的控件,常用于显示和编辑二维表格数据。它提供了各种功能来管理和操作表格数据,包括:
1. 显示数据:TableView 可以根据数据模型显示表格数据。它以行和列的形式展示数据,每个单元格可以包含文本、图像或其他自定义的小部件。
2. 编辑数据:TableView 支持对表格数据进行编辑。用户可以在单元格内直接对数据进行修改,并根据定义的编辑规则来验证和更新数据。
3. 排序和过滤:TableView 提供了对表格数据的排序和过滤功能。用户可以对表格中的列进行排序,以按升序或降序排列数据。可以使用过滤器来根据指定条件过滤显示的数据。
4. 选择和多选:TableView 允许用户进行单元格的选择和多个单元格的多选。它支持各种选项模式,如单选、多选和连续选择。
5. 自定义单元格样式和外观:TableView 允许你通过自定义样式表(CSS)或其他绘制方法,对单元格的外观进行自定义。你可以设置不同的字体、颜色、背景和边框等,以满足特定的界面需求。
6. 表头和列操作:TableView 允许你对表头进行操作,如添加、删除和调整列宽。你可以通过拖拽表头来重新排序列,并支持对列进行排序指示符的显示。
7. 上下文菜单和自定义操作:TableView 支持右键点击单元格或行时显示上下文菜单。你可以自定义上下文菜单的内容,并将自定义操作与特定的单元格或行相关联。
8. 模型视图分离:TableView 将数据和界面分离,使用模型-视图架构。它使用数据模型来管理和操作底层数据,并将数据显示在视图上。这种分离使得你可以独立于数据而灵活地修改表格视图的外观和交互方式。
1.2TableView使用方法
1、 显示数据
可以通过创建QStandardItemModel类对象model来设置TableView要显示的内容,通过对model的修改来对TableView显示内容进行变换
注意:如果将model创建为局部变量,会导致TableView无法显示。原因是局部变量被系统自动回收后,与TableView绑定的model就不存在了,此时就相当与还未绑定model,当然就不显示任何内容。
//创建QStandardItemModel对象指针*model
QStandardItemModel *model = new QStandardItemModel();
//通过tableView的setModel来将model与tableView进行绑定
ui->tableView->setModel(model);
//设置tableView水平自适应
m_ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
2. 编辑数据
设置表头标题
QStringList fields = line.split("\t"); // 假设数据以制表符分隔,line为QSring类型
model->setHorizontalHeaderLabels(fields); //设置列标题
//修改表头标题时会触发model实例的QStandardItemModel::headerDataChanged信号
设置表格单元值
//这里介绍两种设置单元格值
//第一种
//(row,column)为要设置的单元格行号和列号
//data 为QStandardItem对象
model->setItem(row,column,&data);
//第二种
//index为要设置单元格的坐标;
//通常用创建QModelIndex index = tableView->model()->index(row,column)
model->setData(index,&data)
//修改单元格值时会触发model实例的QStandardItemModel::dataChanged信号