Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
前言:
视图是用来将模型中的数据项展示到界面上的。QAbstractItemView提供了一个标准的视图接口,以及使用了模型索引提供了一种通用的方法来表示数据。视图通常管理从模型获取的数据的整体布局,它们可以自己渲染独立的数据项,也可以使用委托来处理渲染和编辑。
视图除了显示数据,还可以处理项目间的导航,以及项目的选择行为等。支持选择单个项目(QAbstractItemView::SelectItems)、只选择行(QAbstractItemView::SelectRows)、只选择列(QAbstractItemView::SelectColumns)。
对于一些视图,如QTableView和QTreeView,在显示项目的同时还可以显示标头。这是通过QHeaderView类实现的,它们使用QAbstractItemModel::headerData()函数从模型中获取数据,然后使用一个标签显示标头信息。
Qt中已经提供了一些线程的视图:QListView、QTableView、QTreeView。这三个都是使用规范的格式来显示数据的,如果想要实现条形图或者饼图等特殊的显示方式,就需要重新实现视图类了。
处理项目选择:
-
在视图中被选择的项目的信息存储在一个QItemSelectionModel实例中。
-
视图中总有一个当前项目和一个被选择项目。在同一时间,一个项目可以既是当前项目,也是被选择项目。 当前项目和被选择项目的区别:
-
只能有一个当前项目。但是可以有多个被选择项目;
-
使用键盘导航或者鼠标按键可以切换当前项目。项目是否处于被选择状态取决于冀哥预先定义好的模式,例如:单项选择、多项选择等;
-
按下F2键或者双击数百哦都可以编辑当前项目。当前项目可以通过指定一个范围来一起被使用;
-
当前项目会显示焦点矩形。被选择项目会使用选择矩形来表示。
视图的使用:
//定义一个成员变量
QTableView *tableView;
//创建一个模型,并向模型中插入数据
QStandardItemModel *model = new QStanderdItemModel(7, 4, this);
for(int row = 0; row <7; ++row)
{
for(int column = 0; column < 4, ++column)
{
QStandardItem *item = new QStandardItem(QString("%1").arg(row*4+column));
model->setItem(row, column, item);
}
}
//将模型设置到视图中
tableView = new QTableView;
tableView->setModel(model);
setCentralWidget(tableView);
视图可以理解为一个部件,可以显示在界面中。