QAbstractItemView,QTableView
来源:互联网 发布:windows找不到runtime 编辑:程序博客网 时间:2024/05/22 16:04
- QAbstractItemView
- QTableView
QAbstractItemView
QAbstractItemView类为项视图类提供了基本的功能。
QAbstractItemView是每一个使用QAbstractItemModel的标准视图的基类。QAbstractItemView是抽象类从而不能实例化。通过信号与槽机制,它提供一个标准的接口与model进行交互操作,使子类能够在模型的变化中保持最新。这个类为键盘和鼠标导航、窗口滚动、项编辑和选择提供了标准支持。键盘导航实现了这个功能:
注意,上面的表格假设选择模式允许操作。例如,你不能选择任何项如果选择模式是QAbstractItemView::NoSelection。
QAbstractItemView同样也是模型视图架构中的模型视图类之一。
继承QAbstractItemView的视图类只需要实现它们自己的特定的视图功能,比如绘制items,返回item的尺寸,查找item等。
QAbstractItemView提供一些公有槽,如edit(),setCurrentIndex()。也提供很多的保护槽,包括dataChanged(),rowsInserted(),rowsAboutToRemoved(),selectionChanged(),和currentChanged()。
根item由rootIndex()返回,当前item由currentIndex()返回。确保item对使用scrollTo()是可见的。
QAbstractItemView的一些函数与滚动有关,如 setHorizontalScrollMode()和setVerticalScrollMode()。为了设置scroll bars的范围,可以重新实现view的resizeEvent()函数。
void MyView::resizeEvent(QResizeEvent *event)
{
horizontalScrollBar()->setRange(0, realWidth - width());
...
}
有一点要注意,该设定范围只有widget被显示的时候才更新。
其他几个函数涉及到选择控制,如setSelectionMode(),setSelectionBehavior()。这个类提供了一个默认的选择模型来处理(selectionModel()),但是能够通过使用setSelectionModel()和一个实例化的QItemSelectionModel来替换。
为了完全控制显示和编辑条目,可以使用setItemDelegate()指定一个委托。
QAbstractItemView提供了许多受保护的函数,有些涉及编辑。如edit(),和commitData()。同时还有其他的键盘和鼠标的事件处理器。
注意:如果你继承了QAbstractItemView并试图去更新视口的内容,你应该使用viewport->update()而不是update()函数,因为所有的绘制操作都发生在viewport上。
QTableView
QTableView类继承自QAbstractItemView。为table视图提供默认的模型/视图实现。
QTableView实现一个显示模型项数据的表视图,这个类提供之前由QTable类提供的标准表,不同的是使用了由Qt模型视图架构提供的更灵活方法。同样该类是Qt模型视图架构中model/view类之一。
QTableView类继承自QAbstractItemModel,实现了基类定义的接口,允许展示models提供的数据。
导航
可以通过鼠标点击来导航单元格,或者通过箭头键。因为QTableView默认使能了tabKeyNavigation,也能够点击Tab和Backtab在单元格间移动。
可视化外观
Table可通过verticalHeader()函数获得一个垂直的头部,以horizontalHeader()函数获得一个水平的头部。通过rowHeight()和columnWidth()获取行列高度和宽度。因为这两者都是普通部件,能够使用hide()函数隐藏它们。
可以使用hideRow(), hideColumn(), showRow(),showColumn()来隐藏或显示行列。selectRow() 和 selectColumn()选择行列,showGrid函数决定是否显示网格。
表视图中的项,和其他项视图一样,使用标准的delegate来渲染和编辑。
然而,对于某些任务,在表中插入widget是很有用的。这些widgets用setIndexWidget()函数设置为特别的index,之后用indexWidget检索。
默认情况下,表格中的单元格不会扩展以填充可用空间。你可以通过拉伸头部最后一段来使单元格填充可用空间。使用horizontalHeader() 或 verticalHeader() 访问相关的头部,并设置头部的stretchLastSection属性。
如需要根据行列的需求分布可用空间,可调用视图的resizeColumnsToContents() 或resizeRowsToContents()函数。
坐标系统
对于一些专业的表格,能够在行列索引和widget坐标间转换是很有用的。rowAt()函数在指定行视图中提供y坐标,行索引可以用rowViewportPosition()来获得一个与之相对应的y坐标。columnAt()和columnViewportPosition()在x坐标和列索引间提供同等的转换。
- QAbstractItemView,QTableView
- QAbstractItemView
- VS2010+QT5编程之巧妙运用定时器解决QTreeView/QTableView等QAbstractItemView实时条目统计问题
- QTableView
- QTableView
- QTableview
- QTableView
- QTableView
- QTableView
- QTableView
- QTableView
- QAbstractItemView类参考
- QAbstractItemView使用整理
- Custom QAbstractItemView must implement functions
- Qt之QAbstractItemView右键菜单
- QComboBox中QAbstractItemView宽度设置
- QTableview 用法
- QTableWidget&&QTableView
- 真正聪明的人从来不自己做PPT,看完这篇就放假吧!
- 魏尔斯特拉斯函数与分形图形的动画演示
- 网络访问数据并展示
- go下载被墙掉的第三方库
- [杂题 单调性]【NOIP2016】蚯蚓
- QAbstractItemView,QTableView
- [ 数据结构 ] DS线性表综合练习--数制转换
- java 面试问的问题和个人理解(三年)(一)
- stlink gdb server
- iCheck表单美化插件使用方法详解(含参数、事件等)
- HDU1520 Anniversary party 解题报告【树形DP】
- wps白色背景设置为淡绿色保护眼睛预防眼疲劳
- findContours函数报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方案之一
- 微信摇一摇周边设置