QTableView 和 predefined Models

来源:互联网 发布:linux arp高速缓存表 编辑:程序博客网 时间:2024/05/16 04:43

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.

QStringListModelStores a list of stringsQStandardItemModelStores arbitrary hierarchical itemsQFileSystemModel
QDirModel(obsolete)Encapsulate the local file systemQSqlQueryModelEncapsulate an SQL result setQSqlTableModelEncapsulates an SQL tableQSqlRelationalTableModelEncapsulates an SQL table with foreign keysQSortFilterProxyModelSorts 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);