QStandardItemModel用法,点击。

 研究源码时总能看到QStandardItemModel的身影,于是查看Qt帮助文档,感觉其功能还蛮强大的,于是将英文翻译过来以便后用。

QStandardItemModel q标准化模型类提供了一个用于存储定制数据的通用模型。 q标准化模型可以作为标准Qt数据类型的存储库。它是模型/视图类之一,也是Qt模型/视图框架的一部分。 q标准化模型提供了一种经典的基于项目的方法来处理模型。q标准化模型提供了q标准化模型中的项目。 q标准化模型实现了QAbstractItemModel接口,这意味着该模型可以用于提供支持该接口的任何视图中的数据(如QListView、QTableView和QTreeView,以及自定义的类型)。

            当您需要一个列表或树时,通常会创建一个空的q标准化模型,并使用appendRow()将项目添加到模型中,并使用item()来访问项目。如果您的模型代表一个表,那么您通常将表的维度传递给q标准化模型构造函数,并使用setItem()将条目放置到表中。您还可以使用setRowCount()和setColumnCount()来改变模型的维度。要插入项,请使用insertRow()或insertColumn(),并删除项目,使用removeRow()或removeColumn()。

   使用q标准化模型创建表的示例:

[html]  view plain  copy
  1. QStandardItemModel model(4, 4);  
  2. for (int row = 0; row < 4; ++row) {  
  3.     for (int column = 0; column < 4; ++column) {  
  4.         QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));  
  5.         model.setItem(row, column, item);  
  6.     }  
  7. }  
使用q标准化模型创建树的示例:
[html]  view plain  copy
  1. QStandardItemModel model;  
  2.  QStandardItem *parentItem = model.invisibleRootItem();  
  3.  for (int i = 0; i < 4; ++i) {  
  4.      QStandardItem *item = new QStandardItem(QString("item %0").arg(i));  
  5.      parentItem->appendRow(item);  
  6.      parentItem = item;  
  7.  }  
          在视图上设置模型之后,通常需要对用户操作做出反应,例如单击项目。由于QAbstractItemView提供基于QModelIndex的信号和函数,您需要一种方法来获得与给定QModelIndex对应的q标准化,反之亦然。itemFromIndex()和indexFromItem()提供了这个映射。itemFromIndex()的典型应用包括获取项目目前的索引视图,并获取项对应于一个索引由QAbstractItemView信号,如QAbstractItemView:点击()。首先在你的类中连接视图的符号

[html]  view plain  copy
  1. QTreeView *treeView = new QTreeView(this);  
  2. treeView->setModel(myStandardItemModel);  
  3. connect(treeView, SIGNAL(clicked(QModelIndex)),  
  4.         this, SLOT(clicked(QModelIndex)));  

       当您收到信号时,您在给定的模型索引上调用itemFromIndex(),以获得指向该项目的指针:

[html]  view plain  copy
  1. void MyWidget::clicked(const QModelIndex &index)  
  2. {  
  3.     QStandardItem *item = myStandardItemModel->itemFromIndex(index);  
  4. }  
        相反,当您希望调用以索引为参数的模型/视图函数时,您必须获得项目的QModelIndex。您可以通过使用model的indexFromItem()函数来获得索引,也可以通过调用q标准化tem::index()来获得该索引:
[html]  view plain  copy
  1. treeView->scrollTo(item->index());  
       当然,您不需要使用基于项目的方法;您可以在使用模型时完全依赖QAbstractItemModel接口,或者使用二者的组合。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值