QStandardItemModel的用法
来源:互联网 发布:网络侵权的管辖 编辑:程序博客网 时间:2024/05/16 11:18
研究源码时总能看到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标准化模型创建表的示例:
QStandardItemModel model(4, 4); for (int row = 0; row < 4; ++row) { for (int column = 0; column < 4; ++column) { QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); model.setItem(row, column, item); } }使用q标准化模型创建树的示例:
QStandardItemModel model; QStandardItem *parentItem = model.invisibleRootItem(); for (int i = 0; i < 4; ++i) { QStandardItem *item = new QStandardItem(QString("item %0").arg(i)); parentItem->appendRow(item); parentItem = item; }在视图上设置模型之后,通常需要对用户操作做出反应,例如单击项目。由于QAbstractItemView提供基于QModelIndex的信号和函数,您需要一种方法来获得与给定QModelIndex对应的q标准化,反之亦然。itemFromIndex()和indexFromItem()提供了这个映射。itemFromIndex()的典型应用包括获取项目目前的索引视图,并获取项对应于一个索引由QAbstractItemView信号,如QAbstractItemView:点击()。首先在你的类中连接视图的符号
QTreeView *treeView = new QTreeView(this); treeView->setModel(myStandardItemModel); connect(treeView, SIGNAL(clicked(QModelIndex)), this, SLOT(clicked(QModelIndex)));
当您收到信号时,您在给定的模型索引上调用itemFromIndex(),以获得指向该项目的指针:
void MyWidget::clicked(const QModelIndex &index) { QStandardItem *item = myStandardItemModel->itemFromIndex(index); }相反,当您希望调用以索引为参数的模型/视图函数时,您必须获得项目的QModelIndex。您可以通过使用model的indexFromItem()函数来获得索引,也可以通过调用q标准化tem::index()来获得该索引:
treeView->scrollTo(item->index());当然,您不需要使用基于项目的方法;您可以在使用模型时完全依赖QAbstractItemModel接口,或者使用二者的组合。
阅读全文
0 0
- QStandardItemModel的用法
- QStandardItemModel的使用
- QStandardItemModel
- QStandardItemModel
- QListView 和 QStandardItemModel的使用
- QStandardItemModel 自动被析构的问题
- QStandardItemModel的data线程安全
- QListView,QTreeView和 QStandardItemModel的简单使用
- QListView,QTreeView和 QStandardItemModel的简单使用
- QStandardItemModel角色控制及QTreeView添加不同的右键菜单
- QStandardItemModel角色控制及QTreeView添加不同的右键菜单
- 基于QStandardItemModel的工程目录实现与响应
- Qt中Qtableview 的使用2(QStandardItemModel模型)
- 使用qstandarditemmodel获取qtableview中复选框的数据
- QStandardItemModel简介
- QStandardItemModel QDataWidgetMapper
- 关于QStandardItemModel
- 关于QStandardItemModel
- 7.31
- BIM应用平台简介
- es 查询
- mysql 5.7 解压缩版 zip 安装 详细步骤 教程
- redis学习文章
- QStandardItemModel的用法
- Linux系统运维工程该具备哪些素质
- linux中find命令的使用
- XYNUOJ 1246 Repair the Wall —贪心算法
- 【Oracle】rollup函数
- BIM项目中一些高可用代码
- 300W数据集测试MTCNN的landmark效果代码
- ajax之前loading
- c++的问题