QTableView 和 predefined Models

本文介绍如何利用Qt的预定义模型(如QStringListModel、QStandardItemModel等)来有效地展示和操作常见数据结构。通过设置QTableView的属性,实现数据显示的自定义化,包括显示表线、调整列宽、获取表头、设置编辑状态和选择模式等。并通过实例展示了如何创建和填充QStandardItemModel模型,以及如何增加模型项。

Predefined Models

The typical way to use model/view is to wrap specific data to make it usable with view classes. Qt, however, also provides predefined models for common underlying data structures. If one of the available data structures is suitable for your application, a predefined model can be a good choice.

QStringListModel Stores a list of strings
QStandardItemModel Stores arbitrary hierarchical items
QFileSystemModel
QDirModel(obsolete)
Encapsulate the local file system
QSqlQueryModel Encapsulate an SQL result set
QSqlTableModel Encapsulates an SQL table
QSqlRelationalTableModel Encapsulates an SQL table with foreign keys
QSortFilterProxyModel Sorts and/or filters another model

QTableView
1.是否显示表格线 setShowGrid(true/false)
2.内容决定列的宽度 resizeColumnsToContents()
3.获取垂直表头 verticalHeader (),
4.获取水平表头 horizontalHeader()
5.默认情况下 QTableView是可以编辑的,设置为非编辑状态setEditTriggers(QTableView::NoEditTriggers)
 
6.模式设置选择,用户可以浏览到表中单独的单元格 setSelecttionMode(QAbstractItemView::SingleSelection)  
7.状态设置选择,用户浏览记录项时,整行都是高亮显示的 setSelectionBehavior(QAbstractItemView::SelectRows );
8.模型对象
此处以QStandardItemModel为例, 设置显示模型为4列,同时修改水平标题显示为自定义的中文显示
  1. <span style="font-size:13px;"> QStandardItemModel *model = new QStandardItemModel;   
  2.  model->setColumnCount(4);  
  3.  model->setHeaderData(0,Qt::Horizontal,tr("姓名"));  
  4.  model->setHeaderData(1,Qt::Horizontal,tr("性别"));  
  5.  model->setHeaderData(2,Qt::Horizontal,tr("年龄"));  
  6.  model->setHeaderData(3,Qt::Horizontal,tr("身高"));  
  7. </span>  

9.增加项到模型
  1. model->setData(model->index(0,0),tr("小明"));  
  2. model->setData(model->index(0,1),tr("男"));  
  3. model->setData(model->index(0,2),tr("20"));  
  4. model->setData(model->index(0,3),tr("180"));  

或者
  1. QStandardItem* item0 = new QStandardItem(tr("小明"));  
  2. QStandardItem* item1 = new QStandardItem(tr("男"));  
  3. QStandardItem* item2 = new QStandardItem(tr("20"));  
  4. QStandardItem* item3 = new QStandardItem(tr("180"));  
  5. QList<QStandardItem*> items;  
  6. items << item1 << item2 << item3 << item4;  
  7. model->appendRow(items);  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值