Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QStyledItemDelegate类提供了从模型中的数据项的显示和编辑功能。More...
该QStyledItemDelegate类提供了从模型中的数据项的显示和编辑功能。
当显示从模型数据中的Qt项目的意见,例如,一个QTableView,个别项目被委讬绘制。此外,当一个项目被编辑时,它提供了一个编辑器窗口小部件,它被放置在项目视图的顶部,同时编辑发生的位置。 QStyledItemDelegate是默认的委讬对所有的Qt项目的意见,并在安装后,他们在创建时。
该QStyledItemDelegate类是一个Model/View Classes并且是Qt的一部分model/view framework。委讬允许项的显示和编辑,以独立于模型和视图开发的。
在模型项的数据分配一个ItemDataRole;每个项目可以存储QVariant为每个角色。 QStyledItemDelegate实现显示和编辑的预期用户最常用的数据类型,包括布尔,整数和字符串。
这些数据将被绘制不同,这取决于他们在模型中的作用。下表描述的角色和数据类型的委讬可以处理它们。它往往是足以确保模型返回每个角色的适当的数据,以确定项目的意见的外观。
Role | Accepted Types |
---|---|
Qt.BackgroundRole | QBrush |
Qt.BackgroundColorRole | QColor (obsolete; use Qt.BackgroundRole instead) |
Qt.CheckStateRole | Qt.CheckState |
Qt.DecorationRole | QIcon, QPixmap, QImage and QColor |
Qt.DisplayRole | QString and types with a string representation |
Qt.EditRole | See QItemEditorFactory for details |
Qt.FontRole | QFont |
Qt.SizeHintRole | QSize |
Qt.TextAlignmentRole | Qt.Alignment |
Qt.ForegroundRole | QBrush |
Qt.TextColorRole | QColor (obsolete; use Qt.ForegroundRole instead) |
编辑器都具有创建QItemEditorFactory;通过提供一个默认的静态实例QItemEditorFactory安装在所有项目的代表。您可以使用设置一个自定义的工厂setItemEditorFactory( )或设置新的默认出厂带QItemEditorFactory.setDefaultFactory( ) 。它是存储在项目模型与数据EditRole被编辑。请参阅QItemEditorFactory类为更高层的介绍项目编辑器的工厂。该Color Editor Factory示例显示了如何创建自定义编辑器的工厂。
如果代理不支持绘画你需要的数据类型,或者您要自定义项目的图纸,你需要继承QStyledItemDelegate ,并重新实现paint( )和可能sizeHint( ) 。该paint()函数被单独地调用的每个项目,并与sizeHint( ) ,您可以为每个人指定的提示。
当重新实现paint( ) ,人们通常会处理的数据类型一想绘制和使用超类实现其他类型。
的复选框指标的绘画是由当前样式进行。样式还指定了大小和边界矩形在其中绘制的数据不同的数据的作用。项目本身的边框也被计算的风格。当图纸已经支持的数据类型,因此它是一个好主意,要求风格这些边界矩形。该QStyle类的描述更详细地描述这一点。
如果你想改变任何通过复选框指标的样式或绘画计算的边界矩形的,你可以继承QStyle。但是请注意,这些项的大小也可以受到重新实现sizeHint( ) 。
这是可能的自定义委讬来提供编辑器,无需使用一个编辑器项目工厂。在这种情况下,下面的虚函数必须被重新实现:
该Star Delegate例如,通过重新实现这些方法创建编辑器。
由于Qt的4.4 ,有两个委讬类:QItemDelegate和QStyledItemDelegate 。不过,默认的委讬是QStyledItemDelegate 。这两个类是独立的替代品来画,并提供编辑器的项目中的观点。它们之间的区别在于QStyledItemDelegate使用当前样式来绘制它的项目。因此,我们建议实现自定义委讬或与Qt样式表工作时,在使用QStyledItemDelegate作为基类。需要的不是类的代码应该是平等的,除非自定义委讬需要使用的样式绘制。
如果你想自定义的项目意见的画,你应该实现一个自定义样式。请参阅QStyle类文档。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个项目委讬给定的parent。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
从重新实现QAbstractItemDelegate.createEditor( ) 。
返回用于编辑由指定的项目小组件index进行编辑。该parent小工具和风格option用于控制如何显示在编辑器部件。
See also QAbstractItemDelegate.createEditor( ) 。
该函数返回一个委讬将用于显示的字符串Qt.DisplayRole该模型中的locale。value是的价值Qt.DisplayRole提供的模型。
默认实现使用的QLocale.toString转换value成QString。
这个功能没有要求空模型指数,即指数的模型返回一个无效QVariant。
See also QAbstractItemModel.data( ) 。
从重新实现QAbstractItemDelegate.editorEvent( ) 。
从重新实现QObject.eventFilter( ) 。
返回True如果给定的editor是一个有效的QWidget和给定的event处理,否则返回False 。下面的按键事件在默认情况下的处理:
在的情况下Tab,Backtab,Enter和Return按键事件,editor的数据被COMITTED到模型和编辑器被关闭。如果event是Tab按键的视图将在视图上的下一个项目打开一个编辑器。同样地,如果event是Backtab按键视图将在打开一个编辑器previous在视图中的项目。
如果该事件是Esc按键事件时,editor关闭without提交其数据。
See also commitData()和closeEditor( ) 。
初始化option与使用索引值index。当他们需要一个这种方法是有用的子类QStyleOptionViewItem,但不希望在所有的信息填写自己。此功能将检查的版本QStyleOptionViewItem并填写了附加价值QStyleOptionViewItemV2,QStyleOptionViewItemV3和QStyleOptionViewItemV4。
See also QStyleOption.initFrom( ) 。
返回使用的项目委讬编辑工厂。如果没有编辑器出厂设置,该函数将返回null 。
See also setItemEditorFactory( ) 。
从重新实现QAbstractItemDelegate.paint( ) 。
使用给定的呈现委讬painter和风格option由指定的项目index。
使用视图的此功能涂料项目QStyle。
当在子类中重新实现的油漆。使用initStyleOption( )来设置option以同样的方式作为QStyledItemDelegate;该选项将始终是一个实例QStyleOptionViewItemV4。请参阅其类描述其内容的信息。
只要有可能,使用option而画。尤其是其rect变量来决定在哪里绘制和其state以确定它是否被启用或选定。
喷漆后,您应确保画家返回到其它时,这个函数被调用的供给状态。例如,它可能是有用的呼叫QPainter.save( )之前,绘画和QPainter.restore( )之后。
See also QItemDelegate.paint( )QStyle.drawControl()和QStyle.CE_ItemViewItem。
从重新实现QAbstractItemDelegate.setEditorData( ) 。
设置由显示和编辑数据editor从模型中指定的数据模型项目index。
默认实现存储在数据editorwidget的user property。
See also QMetaProperty.isUser( ) 。
设置编辑工厂中使用的项目的委讬是factory规定。如果没有编辑器出厂设置,该项目代表将使用默认编辑器工厂。
See also itemEditorFactory( ) 。
从重新实现QAbstractItemDelegate.setModelData( ) 。
获取数据从editor插件和将其存储在指定的model在项目index。
默认实现得到的值也可以从存储在数据模型editorwidget的user property。
See also QMetaProperty.isUser( ) 。
从重新实现QAbstractItemDelegate.sizeHint( ) 。
返回显示由指定的项目需要由委讬的大小index考虑到所提供的样式信息option。
该函数使用视图的QStyle以确定该项目的大小。
See also QStyle.sizeFromContents()和QStyle.CT_ItemViewItem。
从重新实现QAbstractItemDelegate.updateEditorGeometry( ) 。
更新editor由指定的项目index根据风格option给出。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |