一个用来显示表格式数据的MVC 视图部件。
这个视图以表格的方式显示来自于某个WAbstractItemModel 的数据。它支持增量渲染,这样就不会过度使用客户端或服务器端的资源。
对条目的渲染(以及编辑)是由一个WAbstractItemDelegate 来处理的,默认情况下使用的是WItemDelegate,它会渲染所有预定义的角色(参考Wt::ItemDataRole),包括文字、图标、复选框和提示。
这个视图在水平和竖直方向上都提供虚拟的滚动功能,因此可用来显示巨型数据模型(有海量的列和行)。
如果模型表示自己支持编辑的话(参考Wt::ItemIsEditable标志),那么这个视图可以支持编辑功能。你可以使用setEditTriggers()来设置用来启动编辑过程的触发条件。实际的编辑功能是由条目代理(item delegate)(你可以用setItemDelegateForColumn()来为某列设置一个合适的代理)来提供的。可以使用setEditOptions()来控制这个视图是否以及如何处理多个编辑器。
默认情况下,所有列的宽度都是150px。可使用API 方法setColumnWidth()来设置所有列的宽度,另外用户也可以使用表头中提供的拖动柄来设置。
如果模型支持排序(WAbstractItemModel::sort())的话,比如说WStandardItemModel,那么你可以使用setSortingEnabled()来启用表头中的排序按钮。
你可以设置成允许以行或单元格为单位来选择(使用setSelectionBehavior()),以及是否允许选中多个条目 (使用setSelectionMode()),并且使用selectionChanged()信号来监听对于选择项的改变。
你可以为这个视图启用拖放功能,这个功能是能够兼顾到模型中的条目的。当你启用拖放(参考setDragEnabled())时,当前选中项可能能够被拖放,但是前提条件是选中项中的全部条目都表示支持拖放(由ItemIsDragEnabled标志控制)并且模型声明了自己的多媒体类型(mime-type)(由WAbstractItemModel::mimeType()控制)。同理,启用咯空降(dropping)(参考 setDropsEnabled())功能的话,视图可能能够在某个条目上接收空降事件,前提条件是那个条目表示自己支持空降(由ItemIsDropEnabled标志控制)。
你还可以对任何条目上的鼠标点击事件作出响应,只要连接到clicked()或doubleClicked()信号就行咯。
表格视图是由当前CSS 主题来控制样式的。外观可由Wt-tableview 这个CSS 类以及以下选择器来重载。
对表格体产生作用的选择器:
.Wt-tableview .Wt-tv-contents : 当javascript 可用时使用的主要div
.Wt-tableview .Wt-plaintable : 当javascript 不可用的使用的主要表格
.Wt-tableview .Wt-pagingbar : 翻页滚动条
对表头起作用的选择器:
.Wt-tableview .Wt-header : 表头的背景div
.Wt-tableview .Wt-headertable : .Wt-header div中的div,以让表头可滚动
.Wt-tableview .Wt-label : 表头文本标签
.Wt-tableview .Wt-tv-rh : 列的宽度控制柄
.Wt-tableview .Wt-tv-sh-up : 列的排序控制柄,向上排序
.Wt-tableview .Wt-tv-sh-none : 列的排序控制柄,未排序
.Wt-tableview .Wt-tv-sh-down : 列的排序控制柄,向下排序
.Wt-tableview .Wt-tv-br : 表头边框
对表格内容起作用的选择器:
.Wt-tableview .Wt-spacer : 用来表示未载入的内容的空白
.Wt-tableview .Wt-selected : 选中的条目
.Wt-tableview .Wt-drop-site : 可能的空降位置
.Wt-tableview .Wt-tv-c : 单元格样式
HxLauncher: Launch Android applications by voice commands