QStyledItemDelegate Class Reference
[QtGui module]
该QStyledItemDelegate类提供了从模型中的数据项的显示和编辑功能。More…
Methods
__init__ (self, QObject parent = None)
QWidget createEditor (self, QWidget parent, QStyleOptionViewItem option, QModelIndex index)
QString displayText (self, QVariant value, QLocale locale)
bool editorEvent (self, QEvent event, QAbstractItemModel model, QStyleOptionViewItem option, QModelIndex index)
bool eventFilter (self, QObject object, QEvent event)
initStyleOption (self, QStyleOptionViewItem option, QModelIndex index)
QItemEditorFactory itemEditorFactory (self)
paint (self, QPainter painter, QStyleOptionViewItem option, QModelIndex index)
setEditorData (self, QWidget editor, QModelIndex index)
setItemEditorFactory (self, QItemEditorFactory factory)
setModelData (self, QWidget editor, QAbstractItemModel model, QModelIndex index)
QSize sizeHint (self, QStyleOptionViewItem option, QModelIndex index)
updateEditorGeometry (self, QWidget editor, QStyleOptionViewItem option, QModelIndex index)
Detailed Description
该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示例显示了如何创建自定义编辑器的工厂。
Subclassing QStyledItemDelegate
如果代理不支持绘画你需要的数据类型,或者您要自定义项目的图纸,你需要继承QStyledItemDelegate ,并重新实现paint( )和可能sizeHint( ) 。该paint()函数被单独地调用的每个项目,并与sizeHint( ) ,您可以为每个人指定的提示。
当重新实现paint( ) ,人们通常会处理的数据类型一想绘制和使用超类实现其他类型。
的复选框指标的绘画是由当前样式进行。样式还指定了大小和边界矩形在其中绘制的数据不同的数据的作用。项目本身的边框也被计算的风格。当图纸已经支持的数据类型,因此它是一个好主意,要求风格这些边界矩形。该QStyle类的描述更详细地描述这一点。
如果你想改变任何通过复选框指标的样式或绘画计算的边界矩形的,你可以继承QStyle。但是请注意,这些项的大小也可以受到重新实现sizeHint( ) 。
这是可能的自定义委讬来提供编辑器,无需使用一个编辑器项目工厂。在这种情况下,下面的虚函数必须被重新实现:
- createEditor() returns the widget used to change data from the model and can be reimplemented to customize editing behavior.
- setEditorData() provides the widget with data to manipulate.
- updateEditorGeometry() ensures that the editor is displayed correctly with respect to the item view.
- setModelData() returns updated data to the model.
该Star Delegate例如,通过重新实现这些方法创建编辑器。
QStyledItemDelegate vs. QItemDelegate
由于Qt的4.4 ,有两个委讬类:QItemDelegate和QStyledItemDelegate 。不过,默认的委讬是QStyledItemDelegate 。这两个类是独立的替代品来画,并提供编辑器的项目中的观点。它们之间的区别在于QStyledItemDelegate使用当前样式来绘制它的项目。因此,我们建议实现自定义委讬或与Qt样式表工作时,在使用QStyledItemDelegate作为基类。需要的不是类的代码应该是平等的,除非自定义委讬需要使用的样式绘制。
如果你想自定义的项目意见的画,你应该实现一个自定义样式。请参阅QStyle类文档。
Method Documentation
QStyledItemDelegate.__init__ (self, QObject parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个项目委讬给定的parent。
QWidget QStyledItemDelegate.createEditor (self, QWidget parent, QStyleOptionViewItem option, QModelIndex index)
[
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
]($docs-qwidget.html)
从重新实现QAbstractItemDelegate.createEditor( ) 。
返回用于编辑由指定的项目小组件index进行编辑。该parent小工具和风格option用于控制如何显示在编辑器部件。
See also QAbstractItemDelegate.createEditor( ) 。
QString QStyledItemDelegate.displayText (self, QVariant value, QLocale locale)
该函数返回一个委讬将用于显示的字符串Qt.DisplayRole该模型中的locale。value是的价值Qt.DisplayRole提供的模型。
默认实现使用的QLocale.toString转换value成QString。
这个功能没有要求空模型指数,即指数的模型返回一个无效QVariant。
See also QAbstractItemModel.data( ) 。
bool QStyledItemDelegate.editorEvent (self, QEvent event, QAbstractItemModel model, QStyleOptionViewItem option, QModelIndex index)
从重新实现QAbstractItemDelegate.editorEvent( ) 。
bool QStyledItemDelegate.eventFilter (self, QObject object, QEvent event)
从重新实现QObject.eventFilter( ) 。
返回True如果给定的editor是一个有效的QWidget和给定的event处理,否则返回False 。下面的按键事件在默认情况下的处理:
- Tab
- Backtab
- Enter
- Return
- Esc
在的情况下Tab,Backtab,Enter和Return按键事件,editor的数据被COMITTED到模型和编辑器被关闭。如果event是Tab按键的视图将在视图上的下一个项目打开一个编辑器。同样地,如果event是Backtab按键视图将在打开一个编辑器previous在视图中的项目。
如果该事件是Esc按键事件时,editor关闭without提交其数据。
See also commitData()和closeEditor( ) 。
QStyledItemDelegate.initStyleOption (self, QStyleOptionViewItem option, QModelIndex index)
初始化option与使用索引值index。当他们需要一个这种方法是有用的子类QStyleOptionViewItem,但不希望在所有的信息填写自己。此功能将检查的版本QStyleOptionViewItem并填写了附加价值QStyleOptionViewItemV2,QStyleOptionViewItemV3和QStyleOptionViewItemV4。
See also QStyleOption.initFrom( ) 。
QItemEditorFactory QStyledItemDelegate.itemEditorFactory (self)
[
返回使用的项目委讬编辑工厂。如果没有编辑器出厂设置,该函数将返回null 。
]($docs-qitemeditorfactory.html)
See also setItemEditorFactory( ) 。
QStyledItemDelegate.paint (self, QPainter painter, QStyleOptionViewItem option, QModelIndex index)
从重新实现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。
QStyledItemDelegate.setEditorData (self, QWidget editor, QModelIndex index)
从重新实现QAbstractItemDelegate.setEditorData( ) 。
设置由显示和编辑数据editor从模型中指定的数据模型项目index。
默认实现存储在数据_editor_widget的user property。
See also QMetaProperty.isUser( ) 。
QStyledItemDelegate.setItemEditorFactory (self, QItemEditorFactory factory)
设置编辑工厂中使用的项目的委讬是factory规定。如果没有编辑器出厂设置,该项目代表将使用默认编辑器工厂。
See also itemEditorFactory( ) 。
QStyledItemDelegate.setModelData (self, QWidget editor, QAbstractItemModel model, QModelIndex index)
从重新实现QAbstractItemDelegate.setModelData( ) 。
获取数据从editor插件和将其存储在指定的model在项目index。
默认实现得到的值也可以从存储在数据模型_editor_widget的user property。
See also QMetaProperty.isUser( ) 。
QSize QStyledItemDelegate.sizeHint (self, QStyleOptionViewItem option, QModelIndex index)
从重新实现QAbstractItemDelegate.sizeHint( ) 。
返回显示由指定的项目需要由委讬的大小index考虑到所提供的样式信息option。
该函数使用视图的QStyle以确定该项目的大小。
See also QStyle.sizeFromContents()和QStyle.CT_ItemViewItem。
QStyledItemDelegate.updateEditorGeometry (self, QWidget editor, QStyleOptionViewItem option, QModelIndex index)
从重新实现QAbstractItemDelegate.updateEditorGeometry( ) 。
更新editor由指定的项目index根据风格option给出。