本文主要是介绍Qt5控件模型工具类数据模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
其中,QDirModel可以以树形方式显示某个目录下的所有子目录及其相关信息;QProxyModel用于过渡旧的Model类型到新的类型上;QStandardItemModel使用最简单的Grid方式显示Model。此外,开发人员还可以从QAbstractListModel、QAbstractProxyModel和QAbstractTableModel继承出符合自己要求的Model。
除了使用现有的模型和视图外,Qt还提供了更为便捷的类来处理常见的一些数据模型。它们将模型和视图合二为一,因此可以更方便地处理一些常规的数据类型。然而,使用这些类型可能会失去模型/视图结构的灵活性,所以需要根据具体情况进行选择。
例如,QTableWidget继承自QTableView,而QSqlTableModel可以与QTableView绑定,但不能与QTableWidget绑定。在代码中,使用QSqlTableModel可以设置表名、编辑策略、选择数据等,然后将其与QTableView绑定并显示出来。
在绑定视图和模型时,必须使用new关键字创建模型,否则视图无法跟随模型的改变而改变。下面是正确的写法:
```
QStandardItemModel *model;
model = new QStandardItemModel(4, 2);
ui.tableView->setModel(model);
model->setHeaderData(0, Qt::Horizontal, tr("Label"));
model->setHeaderData(1, Qt::Horizontal, tr("Quantity"));
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 2; ++column) {
QModelIndex index = model->index(row, column, QModelIndex());
model->setData(index, QVariant((row+1) * (column+1)));
}
}
```
这段代码创建了一个QStandardItemModel对象,并设置了表格的行数和列数。然后设置表头数据,最后通过循环为每个单元格设置数据。
这篇关于Qt5控件模型工具类数据模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!