Qt5.7文档翻译:QAbstractItemView类,QAbstractItemView Class
QAbstractItemView 类,提供 了用于条目视图 类的基本功能 。 详细说明……
头文件: |
#include <QAbstractItemView> |
qmake指令: |
QT += widgets |
继承: |
|
被继承: |
QColumnView 、 QHeaderView 、 QListView 、 QTableView 和 QTreeView |
QAbstractItemView 类,提供 了用于条目视图 类的基本功能 。
QAbstractItemView 类,是每一个会用到 QAbstractItemModel 的标准视图类的基类。 QAbstractItemView 是一个抽象类,本身无法被实例化。 它提供了一个标准接口,通过这个标准接口,可利用信号和信号槽机制来与模型进行交互 ,使得子类能够跟踪 到模型中发生的变化。 这个类,还为以下事务提供了标准化支持:键盘 及鼠标导航;视界 (viewport)滚动;条目编辑;和选择。具体 地,键盘导航实现了以下功能:
按键 |
功能 |
方向键 |
改变当前条目,并且选中它。 |
Ctrl+方向键 |
改变当前条目,但不选中它。 |
Shift+方向键 |
改变当前条目,并且选中它。之前被选中的条目,仍然保持选中状态。 |
Ctr+空格 |
切换当前条目的选中状态。 |
跳格(Tab)/反跳格(Backtab) |
将当前条目改变成下一个/前一个条目。 |
Home/End |
选中模型中的第一个/最后一个条目。 |
上翻页/下翻页 |
将视图向上/向下滚动,滚动的数量是,视图中可见的行数。 |
Ctrl+A |
选中模型中所有的条目。 |
注意 ,上表有个前提,就是,当前 选择模式 允许进行这些操作。例如, 当选择模式被设置成 QAbstractItemView::NoSelection 的时候,妳就无法选中条目了。
QAbstractItemView 类,是 模型/视图 类 中的一个,并且是Qt 中 模型视图框架 的组成部分。
继承 了 QAbstractItemView 的那些视图类,只需要实现与自身视图属性相关的功能,例如绘制条目外观 、返回条目的几何属性、查找条目,等等。
QAbstractItemView 提供 了一些常用的信号槽,例如 edit () 和 setCurrentIndex ()。 还提供了狠多受保护的(protected)信号槽,包括 dataChanged () 、 rowsInserted () 、 rowsAboutToBeRemoved () 、 selectionChanged () 和 currentChanged ()。
根条目由 rootIndex ()返回,当前条目由 currentIndex ()返回。 要确保某个条目可见,则调用 scrollTo ()。
QAbstractItemView 的某些函数是针对滚动功能而开发的,例如 setHorizontalScrollMode ()和 setVerticalScrollMode ()。 要设置滚动条的范围的话,可覆盖该视图的 resizeEvent ()函数:
void MyView::resizeEvent( QResizeEvent *event) {
horizontalScrollBar()->setRange(0, realWidth - width());
...
}
注意,范围只在部件被显示的时刻才会更新。
还有另一些函数是针对选择控制功能而开发的;例如, setSelectionMode () ,和 setSelectionBehavior () 。 这个类,提供了一个默认的选择模型 ( selectionModel ()) ,但是,这个也是可以替换掉的,具体就是调用 setSelectionModel (),并传入一个 QItemSelectionModel 实例。
若想要完全控制对于条目的显示及编辑过程,则,调用 setItemDelegate () 来设置一个代理(delegate)。
QAbstractItemView 提供 了狠多受保护的函数。其中 的某些是针对编辑功能开发的,例如 edit ()和 commitData (), 而其它的一些函数是针对键盘及鼠标事件处理的。
注意 : 如果 妳继承了 QAbstractItemView , 且想要更新视界中的内容的话,则应当调用viewport-> update ()而不是 update() ,因为 ,所有的绘图操作都是发生在视界中的。
参考 视图 类 、 模型/视图编 程 、 QAbstractItemModel 和 表格示例 。
这个属性,指定的是,是否要以两种不同颜色来绘制条目的背景。
如果 此属性设置为真( true ),那么,相邻条目的背景会依次使用 QPalette::Base 和 QPalette::AlternateBase 来绘制;否则,条目 的背景会全部使用 QPalette::Base 来绘制。
默认情况 下,此属性的值是假( false )。
访问函数 :
bool |
alternatingRowColors() const |
void |
setAlternatingRowColors(bool enable) |
此属性,指定的是,各个条目的图标的尺寸。
若在此视图可见的情况下设置此属性,会导致视图中的条目被重新布局。
访问函数 :
QSize |
iconSize() const |
void |
setIconSize(const QSize &size) |
事件通知信号 :
void |
iconSizeChanged(const QSize &size) |
此属性,指定的是,在发生文字省略时,省略号"..."所处的位置。
所有条目视图 中此属性 的默认值是 Qt::ElideRight 。
访问函数 :
Qt::TextElideMode |
textElideMode() const |
void |
setTextElideMode(Qt::TextElideMode mode) |
当用户激活了 index 所指向的条目时,会发射出这个信号。至于如何激活条目,则取决于平台;例如,可能是单击该条目,或双击该条目,或在该个条目是当前条目时按下回车键(Return)或确认键(Enter)。
参考 clicked () 、 doubleClicked () 、 entered () 和 pressed () 。
当某个鼠标按键被进行左点击时,会发射此信号。具体在其上发生鼠标点击事件的条目,是由 index 指定的。只有在索引有效的情况下,才会发射这个信号。
参考 activated () 、 doubleClicked () 、 entered () 和 pressed () 。
返回当前条目的模型索引。
参考 setCurrentIndex () 。
当模型中具有指定角色 roles 的某些条目发生变更时,会调用这个信号槽。具体发生了变更的条目,其范围是从左上角 topLeft 到右下角 bottomRight ,并且包含二者。如果仅仅只有一个条目发生改变,则 topLeft == bottomRight 。
发生改变的角色,由 roles 指定,它可能是一个空容器(意味着所有角色全部发生改变),或者是一个非空的容器,其中就具体包含着发生了改变的那些角色子集。
返回位于视界中坐标 point 处的条目所对应的模型索引。
在基类中,这个函数是个纯虚函数。
参考 visualRect () 。
返回指定索引index 的条目所对应的部件。
此函数是从Qt 4.1 开始引入的。
参考 setIndexWidget () 。
返回 被这个视图和其模型所使用的条目代理。 它或者是由 setItemDelegate ()设置的,或者是默认的。
参考 setItemDelegate () 。
返回被这个视图和其模型针对指定索引 index 所使用的条目代理。
返回 这个视图和其模型针对指定列 column 所使用的条目代理。 妳可调用函数 itemDelegate (),来获取到针对指定索引的当前代理的指针。
此函数是从Qt 4.2 开始引入的。
参考 setItemDelegateForColumn () 、 itemDelegateForRow () 和 itemDelegate () 。
返回 这个视图和其模型针对指定行 row 所使用的条目代理,或者 ,如果未设置任何代理则返回0。 妳可调用函数 itemDelegate (),来获取到针对指定索引的当前代理的指针。
此函数是从Qt 4.2 开始引入的。
参考 setItemDelegateForRow () 、 itemDelegateForColumn () 和 setItemDelegate () 。
移至并且选中与搜索字符串 search 最佳匹配的条目。如果未找到任何条目,则什么事都不会发生。
在默认实现中,两种情况下会导致搜索结果被重置: search 是空的;或者, 自上次的搜索动作以来, 所经过的时间超过了 QApplication::keyboardInputInterval ()。
返回其模型的根条目的模型索引。根条目,即为,这个视图中的顶级条目的亲代条目。根条目可能是无效的。
参考 setRootIndex () 。
在必要的情况下滚动视图,以使得位于索引 index 处的条目处于可见状态。视图会尝试根据指定的滚动建议 hint 来将该条目放置到适当的位置。
在基类中,这个函数是一个纯虚函数。
将指定的部件 widget 设置到位于指定索引 index 的条目上,该部件的所有权被转移给视界。
如果index无效(例如,妳传入了根索引),则这个函数什么也不会做。
指定部件 widget 的 autoFillBackground 属性必须设置为真(true),否则, 这个部件的背景就会是透明的,使得,对于指定的索引 index ,模型数据 和 条目部件同时被显示出来。
如果索引部件A 被索引部件B 替换,则,索引部件A 就会被删除。例如,下面 的代码中, QLineEdit 对象 会被删除。
setIndexWidget(index, new QLineEdit );
...
setIndexWidget(index, new QTextEdit );
这个函数,应当仅仅用于 在可见区域中显示针对某个条目数据的静态内容。如果 妳想要显示自定义的动态内容,或者想要实现一个自定义的编辑器部件,则,应当子类化 QItemDelegate 。
这个函数是从Qt 4.1 开始引入的。
参考 indexWidget () 和 代理 类 。
将这个视图和其模型的条目代理设置成 delegate 。如果妳想要完全控制针对条目的编辑和显示过程的话,则应当使用这种方式。
任何已有 的代理都会被移除,但不会被删除。 QAbstractItemView 不会夺取 delegate 的所有权。
警告: 妳不应当在多个视图之间共享 同一个代理实例。如果 妳这样做的话,就会引起 不正确或不一致的编辑行为,因为,连接 到指定代理的每个视图都可能会 closeEditor() 收到信号,进而尝试 去访问、修改或关闭某个之前已经被关闭的编辑器。
参考 itemDelegate () 。
设置要由此视图来呈现的模型( model )。
这个函数,会创建且设置一个新的选择模型, 它会替换掉之前使用 setSelectionModel ()设置 的任何模型。然而 ,旧的选择模型不会被删除,因为它可能是被多个视图共享的。 我们建议,如果旧的选择模型不再有用 处的话,则,应当删除旧的模型。通过 以下代码可以做到这一点:
QItemSelectionModel *m = view->selectionModel();
view->setModel(new model);
delete m;
如果 旧模型和旧选择模型都不具有亲代对象,或者它们的亲代对象是一些长寿对象,那么, 可以考虑调用它们的 deleteLater ()函数来显式删除它们。
这个视图 不会 夺取该个模型的所有权,除非它本身就是那个模型的亲代对象。这是因为,该模型可能是被多个不同视图共享的。
参考 model () 、 selectionModel () 和 setSelectionModel () 。
未知美人
http://m.xuite.net/photo/a0923161742/5871910/14
金巧巧
光影
Your opinionsHxLauncher: Launch Android applications by voice commands