处理项目视图中的选择

本文介绍了Qt中处理项目视图选择的概念,包括选择模型、当前项与选定项的区别。选择模型维护了项目视图中选择状态,允许创建自定义选择模型以满足特定需求。在视图中,当前项和选定项是独立的,选择由选择范围组成,可以通过选择模型进行操作,如选择、取消选择、切换项状态。此外,文章还讨论了如何使用选择模型的信号和插槽机制来响应选择变化。
摘要由CSDN通过智能技术生成

概念

项视图类中使用的选择模型提供基于模型/视图体系结构的工具的选择的一般描述。尽管用于操作选择的标准类足以满足所提供的项目视图,但选择模型允许您创建专门的选择模型,以满足您自己的项目模型和视图的要求。

有关视图中所选项的信息存储在QItemSlectModel 类的实例中。这将维护单个模型中项的模型索引,并且独立于任何视图。由于模型上可以有许多视图,因此可以在视图之间共享选择,从而允许应用程序以一致的方式显示多个视图。

选择由选择范围组成。通过只记录所选项目的每个范围的开始和结束模型索引,这些方法有效地维护关于大量项目选择的信息。项目的非连续选择是通过使用多个选择范围来描述选择来构造的。

选择应用于选择模型所包含的模型索引集合。最近选择的应用项目称为当前选择。即使在应用了此选择之后,也可以通过使用某些类型的选择命令来修改此选择的效果。

当前项和选定项

在视图中,始终存在当前项和选定项 - 两个独立状态。项可以是当前项目,并同时选中。视图负责确保始终存在当前项,例如,键盘导航需要当前项。

下表说明当前项和选定项之间的差异。

当前项目 选定项目
只能有一个当前项 可以有多个选定项
通过键导航或鼠标按钮单击更改当前项 当用户与项交互时,根据多个预定义模式(例如,单个选择、多个选择等)设置或取消设置项的选定状态
如果按下编辑键F2,或双击项目(前提是启用编辑),则将编辑当前项目 当前项可以与锚点一起使用,以指定应选择或取消选择的范围(或两者的组合)。
当前项由焦点矩形指示 所选项使用选择矩形进行指示。

在操作选择时,将QItemSelectionModel看作一个项目模型中所有项目的选择状态的记录通常是有帮助的。
设置选择模型后,可以选择、取消选择项集合,也可以切换其选择状态,而无需知道已选择哪些项。可随时检索所有选定项的索引,还可以通过信号和插槽机制通知其他组件对选择模型进行更改。

使用选择模型

标准视图类提供可用于大多数应用程序的默认选择模型。可以使用视图的 selectionModel()函数获取属于一个视图的选择模型,并且在许多视图之间与setSelectionModel() 共享,因此通常不需要构建新的选择模型。

通过指定模型和QItemSelection的一对模型索引来创建选择。它使用索引来引用给定模型中的项,并将它们解释为选定项块中的左上和右下项。若要将选择应用于模型中的项目,则需要将选择提交给选择模型;这可以通过多种方式实现,每一种方式都对选择模型中已经出现的选择产生不同的影响。

选择项目:
构建一个自定义表模型的实例,并打开其数据的表视图

	QStandardItemModel model(10,10);
    QTableView *table = new QTableView(0);
    table->setModel(model);
    QItemSelectionModel *selectionModel = table->selectionModel();
 	QModelIndex topLeft;
    QModelIndex bottomRight;
    topLeft = model->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值