|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.trolltech.qt.internal.QSignalEmitterInternal
com.trolltech.qt.QSignalEmitter
com.trolltech.qt.QtJambiObject
com.trolltech.qt.core.QObject
com.trolltech.qt.gui.QAbstractItemDelegate
public abstract class QAbstractItemDelegate
The QAbstractItemDelegate class is used to display and edit data items from a model. A QAbstractItemDelegate provides the interface and common functionality for delegates in the model/view architecture. Delegates display individual items in views, and handle the editing of model data.
The QAbstractItemDelegate class is one of the Model/View Classes and is part of Qt's model/view framework.
To render an item in a custom way, you must implement paint()
and sizeHint()
. The QItemDelegate
class provides default implementations for these functions; if you do not need custom rendering, subclass that class instead.
We give an example of drawing a progress bar in items; in our case for a package management program.
QStyledItemDelegate
. We do the drawing in the paint()
function:void WidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (index.column() == 1) { int progress = index.data().toInt(); QStyleOptionProgressBar progressBarOption; progressBarOption.rect = option.rect; progressBarOption.minimum = 0; progressBarOption.maximum = 100; progressBarOption.progress = progress; progressBarOption.text = QString::number(progress) + "%"; progressBarOption.textVisible = true; QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter); } else QStyledItemDelegate::paint(painter, option, index);Notice that we use a
QStyleOptionProgressBar
and initialize its members. We can then use the current QStyle
to draw it. To provide custom editing, there are two approaches that can be used. The first approach is to create an editor widget and display it directly on top of the item. To do this you must reimplement createEditor()
to provide an editor widget, setEditorData()
to populate the editor with the data from the model, and setModelData()
so that the delegate can update the model with data from the editor.
The second approach is to handle user events directly by reimplementing editorEvent()
.
QItemDelegate
, Pixelator Example, QStyledItemDelegate
, and QStyle
.
Nested Class Summary | |
---|---|
static class |
QAbstractItemDelegate.EndEditHint
This enum describes the different hints that the delegate can give to the model and view components to make editing data in a model a comfortable experience for the user. |
Nested classes/interfaces inherited from class com.trolltech.qt.QSignalEmitter |
---|
QSignalEmitter.AbstractSignal, QSignalEmitter.Signal0, QSignalEmitter.Signal1, QSignalEmitter.Signal2, QSignalEmitter.Signal3, QSignalEmitter.Signal4, QSignalEmitter.Signal5, QSignalEmitter.Signal6, QSignalEmitter.Signal7, QSignalEmitter.Signal8, QSignalEmitter.Signal9 |
Nested classes/interfaces inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
com.trolltech.qt.internal.QSignalEmitterInternal.AbstractSignalInternal |
Field Summary | |
---|---|
QSignalEmitter.Signal2 |
closeEditor
This signal takes 2 generic argument(s). |
QSignalEmitter.Signal1 |
commitData
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal1 |
sizeHintChanged
This signal takes 1 generic argument(s). |
Fields inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
currentSender |
Constructor Summary | |
---|---|
QAbstractItemDelegate()
Creates a new abstract item delegate with the given parent. |
|
QAbstractItemDelegate(QObject parent)
Creates a new abstract item delegate with the given parent. |
Method Summary | |
---|---|
QWidget |
createEditor(QWidget parent,
QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
Returns the editor to be used for editing the data item with the given index. |
boolean |
editorEvent(QEvent event,
QAbstractItemModel model,
QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
Whenever an event occurs, this function is called with the eventmodeloption and the index that corresponds to the item being edited. |
boolean |
helpEvent(QHelpEvent event,
QAbstractItemView view,
QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
Whenever a help event occurs, this function is called with the eventviewoption and the index that corresponds to the item where the event occurs. |
abstract void |
paint(QPainter painter,
QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
This pure abstract function must be reimplemented if you want to provide custom rendering. |
void |
setEditorData(QWidget editor,
com.trolltech.qt.core.QModelIndex index)
Sets the contents of the given editor to the data for the item at the given index. |
void |
setModelData(QWidget editor,
QAbstractItemModel model,
com.trolltech.qt.core.QModelIndex index)
Sets the data for the item at the given index in the model to the contents of the given editor. |
abstract QSize |
sizeHint(QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
This pure abstract function must be reimplemented if you want to provide custom rendering. |
void |
updateEditorGeometry(QWidget editor,
QStyleOptionViewItem option,
com.trolltech.qt.core.QModelIndex index)
Updates the geometry of the editor for the item with the given index, according to the rectangle specified in the option. |
Methods inherited from class com.trolltech.qt.core.QObject |
---|
childEvent, children, connectSlotsByName, customEvent, disposeLater, dumpObjectInfo, dumpObjectTree, dynamicPropertyNames, event, eventFilter, findChild, findChild, findChild, findChildren, findChildren, findChildren, findChildren, indexOfProperty, installEventFilter, isWidgetType, killTimer, moveToThread, objectName, parent, properties, property, removeEventFilter, setObjectName, setParent, setProperty, startTimer, timerEvent, toString, userProperty |
Methods inherited from class com.trolltech.qt.QtJambiObject |
---|
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr |
Methods inherited from class com.trolltech.qt.QSignalEmitter |
---|
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread |
Methods inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
__qt_signalInitialization |
Methods inherited from class java.lang.Object |
---|
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface com.trolltech.qt.QtJambiInterface |
---|
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership |
Field Detail |
---|
public final QSignalEmitter.Signal2 closeEditor
This signal takes 2 generic argument(s). We list their type and the name they go by in the description of this signal. <com.trolltech.qt.gui.QWidget(named: editor), com.trolltech.qt.gui.QAbstractItemDelegate$EndEditHint(named: hint)>:
This signal is emitted when the user has finished editing an item using the specified editor.
The hint provides a way for the delegate to influence how the model and view behave after editing is completed. It indicates to these components what action should be performed next to provide a comfortable editing experience for the user. For example, if EditNextItem is specified, the view should use a delegate to open an editor on the next item in the model.
EndEditHint
.
public final QSignalEmitter.Signal1 commitData
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <com.trolltech.qt.gui.QWidget(named: editor)>:
This signal must be emitted when the editor widget has completed editing the data, and wants to write it back into the model.
public final QSignalEmitter.Signal1 sizeHintChanged
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <com.trolltech.qt.core.QModelIndex(named: index)>:
This signal must be emitted when the sizeHint()
of index changed.
Views automatically connect to this signal and relayout items as necessary.
Constructor Detail |
---|
public QAbstractItemDelegate()
public QAbstractItemDelegate(QObject parent)
Method Detail |
---|
public final boolean helpEvent(QHelpEvent event, QAbstractItemView view, QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
Returns true if the delegate can handle the event; otherwise returns false. A return value of true indicates that the data obtained using the index had the required role.
For QEvent::ToolTip
and QEvent::WhatsThis
events that were handled successfully, the relevant popup may be shown depending on the user's system configuration.
QHelpEvent
.
public QWidget createEditor(QWidget parent, QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
The base implementation returns 0. If you want custom editing you will need to reimplement this function.
The returned editor widget should have Qt::StrongFocus
; otherwise, QMouseEvent
s received by the widget will propagate to the view. The view's background will shine through unless the editor paints its own background (e.g., with setAutoFillBackground()
).
setModelData()
, and setEditorData()
.
public boolean editorEvent(QEvent event, QAbstractItemModel model, QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
The base implementation returns false (indicating that it has not handled the event).
public abstract void paint(QPainter painter, QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
If you reimplement this you must also reimplement sizeHint()
.
public void setEditorData(QWidget editor, com.trolltech.qt.core.QModelIndex index)
The base implementation does nothing. If you want custom editing you will need to reimplement this function.
setModelData()
.
public void setModelData(QWidget editor, QAbstractItemModel model, com.trolltech.qt.core.QModelIndex index)
The base implementation does nothing. If you want custom editing you will need to reimplement this function.
setEditorData()
.
public abstract QSize sizeHint(QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
If you reimplement this you must also reimplement paint()
.
public void updateEditorGeometry(QWidget editor, QStyleOptionViewItem option, com.trolltech.qt.core.QModelIndex index)
The base implementation does nothing. If you want custom editing you must reimplement this function.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |