QtGui/qabstractitemview.h Source File

qabstractitemview.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QABSTRACTITEMVIEW_H
43 #define QABSTRACTITEMVIEW_H
44 
49 
51 
53 
54 QT_MODULE(Gui)
55 
56 #ifndef QT_NO_ITEMVIEWS
57 
58 class QMenu;
59 class QDrag;
60 class QEvent;
61 class QAbstractItemViewPrivate;
62 
63 class Q_GUI_EXPORT QAbstractItemView : public QAbstractScrollArea
64 {
65  Q_OBJECT
67  Q_FLAGS(EditTriggers)
68  Q_PROPERTY(bool autoScroll READ hasAutoScroll WRITE setAutoScroll)
69  Q_PROPERTY(int autoScrollMargin READ autoScrollMargin WRITE setAutoScrollMargin)
70  Q_PROPERTY(EditTriggers editTriggers READ editTriggers WRITE setEditTriggers)
71  Q_PROPERTY(bool tabKeyNavigation READ tabKeyNavigation WRITE setTabKeyNavigation)
72 #ifndef QT_NO_DRAGANDDROP
73  Q_PROPERTY(bool showDropIndicator READ showDropIndicator WRITE setDropIndicatorShown)
74  Q_PROPERTY(bool dragEnabled READ dragEnabled WRITE setDragEnabled)
75  Q_PROPERTY(bool dragDropOverwriteMode READ dragDropOverwriteMode WRITE setDragDropOverwriteMode)
76  Q_PROPERTY(DragDropMode dragDropMode READ dragDropMode WRITE setDragDropMode)
77  Q_PROPERTY(Qt::DropAction defaultDropAction READ defaultDropAction WRITE setDefaultDropAction)
78 #endif
79  Q_PROPERTY(bool alternatingRowColors READ alternatingRowColors WRITE setAlternatingRowColors)
80  Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
81  Q_PROPERTY(SelectionBehavior selectionBehavior READ selectionBehavior WRITE setSelectionBehavior)
82  Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
83  Q_PROPERTY(Qt::TextElideMode textElideMode READ textElideMode WRITE setTextElideMode)
84  Q_PROPERTY(ScrollMode verticalScrollMode READ verticalScrollMode WRITE setVerticalScrollMode)
85  Q_PROPERTY(ScrollMode horizontalScrollMode READ horizontalScrollMode WRITE setHorizontalScrollMode)
86 
87 public:
93  ContiguousSelection
94  };
95 
99  SelectColumns
100  };
101 
102  enum ScrollHint {
106  PositionAtCenter
107  };
108 
109  enum EditTrigger {
110  NoEditTriggers = 0,
111  CurrentChanged = 1,
112  DoubleClicked = 2,
113  SelectedClicked = 4,
114  EditKeyPressed = 8,
115  AnyKeyPressed = 16,
116  AllEditTriggers = 31
117  };
118 
119  Q_DECLARE_FLAGS(EditTriggers, EditTrigger)
120 
121  enum ScrollMode {
123  ScrollPerPixel
124  };
125 
126  explicit QAbstractItemView(QWidget *parent = 0);
128 
129  virtual void setModel(QAbstractItemModel *model);
130  QAbstractItemModel *model() const;
131 
132  virtual void setSelectionModel(QItemSelectionModel *selectionModel);
133  QItemSelectionModel *selectionModel() const;
134 
135  void setItemDelegate(QAbstractItemDelegate *delegate);
136  QAbstractItemDelegate *itemDelegate() const;
137 
138  void setSelectionMode(QAbstractItemView::SelectionMode mode);
139  QAbstractItemView::SelectionMode selectionMode() const;
140 
141  void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior);
142  QAbstractItemView::SelectionBehavior selectionBehavior() const;
143 
144  QModelIndex currentIndex() const;
145  QModelIndex rootIndex() const;
146 
147  void setEditTriggers(EditTriggers triggers);
148  EditTriggers editTriggers() const;
149 
150  void setVerticalScrollMode(ScrollMode mode);
151  ScrollMode verticalScrollMode() const;
152 
153  void setHorizontalScrollMode(ScrollMode mode);
154  ScrollMode horizontalScrollMode() const;
155 
156  void setAutoScroll(bool enable);
157  bool hasAutoScroll() const;
158 
159  void setAutoScrollMargin(int margin);
160  int autoScrollMargin() const;
161 
162  void setTabKeyNavigation(bool enable);
163  bool tabKeyNavigation() const;
164 
165 #ifndef QT_NO_DRAGANDDROP
166  void setDropIndicatorShown(bool enable);
167  bool showDropIndicator() const;
168 
169  void setDragEnabled(bool enable);
170  bool dragEnabled() const;
171 
172  void setDragDropOverwriteMode(bool overwrite);
173  bool dragDropOverwriteMode() const;
174 
175  enum DragDropMode {
180  InternalMove
181  };
182 
183  void setDragDropMode(DragDropMode behavior);
184  DragDropMode dragDropMode() const;
185 
186  void setDefaultDropAction(Qt::DropAction dropAction);
187  Qt::DropAction defaultDropAction() const;
188 #endif
189 
190  void setAlternatingRowColors(bool enable);
191  bool alternatingRowColors() const;
192 
193  void setIconSize(const QSize &size);
194  QSize iconSize() const;
195 
196  void setTextElideMode(Qt::TextElideMode mode);
197  Qt::TextElideMode textElideMode() const;
198 
199  virtual void keyboardSearch(const QString &search);
200 
201  virtual QRect visualRect(const QModelIndex &index) const = 0;
202  virtual void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) = 0;
203  virtual QModelIndex indexAt(const QPoint &point) const = 0;
204 
205  QSize sizeHintForIndex(const QModelIndex &index) const;
206  virtual int sizeHintForRow(int row) const;
207  virtual int sizeHintForColumn(int column) const;
208 
209  void openPersistentEditor(const QModelIndex &index);
210  void closePersistentEditor(const QModelIndex &index);
211 
212  void setIndexWidget(const QModelIndex &index, QWidget *widget);
213  QWidget *indexWidget(const QModelIndex &index) const;
214 
215  void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate);
216  QAbstractItemDelegate *itemDelegateForRow(int row) const;
217 
218  void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate);
219  QAbstractItemDelegate *itemDelegateForColumn(int column) const;
220 
221  QAbstractItemDelegate *itemDelegate(const QModelIndex &index) const;
222 
223  virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
224 
225 #ifdef Q_NO_USING_KEYWORD
226  inline void update() { QAbstractScrollArea::update(); }
227 #else
229 #endif
230 
231 public Q_SLOTS:
232  virtual void reset();
233  virtual void setRootIndex(const QModelIndex &index);
234  virtual void doItemsLayout();
235  virtual void selectAll();
236  void edit(const QModelIndex &index);
237  void clearSelection();
238  void setCurrentIndex(const QModelIndex &index);
239  void scrollToTop();
240  void scrollToBottom();
241  void update(const QModelIndex &index);
242 
243 protected Q_SLOTS:
244  virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
245  virtual void rowsInserted(const QModelIndex &parent, int start, int end);
246  virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
247  virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
248  virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous);
249  virtual void updateEditorData();
250  virtual void updateEditorGeometries();
251  virtual void updateGeometries();
252  virtual void verticalScrollbarAction(int action);
253  virtual void horizontalScrollbarAction(int action);
254  virtual void verticalScrollbarValueChanged(int value);
255  virtual void horizontalScrollbarValueChanged(int value);
256  virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint);
257  virtual void commitData(QWidget *editor);
258  virtual void editorDestroyed(QObject *editor);
259 
260 Q_SIGNALS:
261  void pressed(const QModelIndex &index);
262  void clicked(const QModelIndex &index);
263  void doubleClicked(const QModelIndex &index);
264 
265  void activated(const QModelIndex &index);
266  void entered(const QModelIndex &index);
267  void viewportEntered();
268 
269 protected:
270  QAbstractItemView(QAbstractItemViewPrivate &, QWidget *parent = 0);
271 
272  void setHorizontalStepsPerItem(int steps);
273  int horizontalStepsPerItem() const;
274  void setVerticalStepsPerItem(int steps);
275  int verticalStepsPerItem() const;
276 
277  enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight,
278  MoveHome, MoveEnd, MovePageUp, MovePageDown,
279  MoveNext, MovePrevious };
280  virtual QModelIndex moveCursor(CursorAction cursorAction,
281  Qt::KeyboardModifiers modifiers) = 0;
282 
283  virtual int horizontalOffset() const = 0;
284  virtual int verticalOffset() const = 0;
285 
286  virtual bool isIndexHidden(const QModelIndex &index) const = 0;
287 
288  virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) = 0;
289  virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0;
290  virtual QModelIndexList selectedIndexes() const;
291 
292  virtual bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event);
293 
294  virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index,
295  const QEvent *event = 0) const;
296 
297 #ifndef QT_NO_DRAGANDDROP
298  virtual void startDrag(Qt::DropActions supportedActions);
299 #endif
300 
301  virtual QStyleOptionViewItem viewOptions() const;
302 
303  enum State {
310  AnimatingState
311  };
312 
313  State state() const;
314  void setState(State state);
315 
316  void scheduleDelayedItemsLayout();
317  void executeDelayedItemsLayout();
318 
319  void setDirtyRegion(const QRegion &region);
320  void scrollDirtyRegion(int dx, int dy);
321  QPoint dirtyRegionOffset() const;
322 
323  void startAutoScroll();
324  void stopAutoScroll();
325  void doAutoScroll();
326 
327  bool focusNextPrevChild(bool next);
328  bool event(QEvent *event);
329  bool viewportEvent(QEvent *event);
330  void mousePressEvent(QMouseEvent *event);
331  void mouseMoveEvent(QMouseEvent *event);
332  void mouseReleaseEvent(QMouseEvent *event);
333  void mouseDoubleClickEvent(QMouseEvent *event);
334 #ifndef QT_NO_DRAGANDDROP
335  void dragEnterEvent(QDragEnterEvent *event);
336  void dragMoveEvent(QDragMoveEvent *event);
337  void dragLeaveEvent(QDragLeaveEvent *event);
338  void dropEvent(QDropEvent *event);
339 #endif
340  void focusInEvent(QFocusEvent *event);
341  void focusOutEvent(QFocusEvent *event);
342  void keyPressEvent(QKeyEvent *event);
343  void resizeEvent(QResizeEvent *event);
344  void timerEvent(QTimerEvent *event);
345  void inputMethodEvent(QInputMethodEvent *event);
346 
347 #ifndef QT_NO_DRAGANDDROP
348  enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport };
349  DropIndicatorPosition dropIndicatorPosition() const;
350 #endif
351 
352 private:
353  Q_DECLARE_PRIVATE(QAbstractItemView)
354  Q_DISABLE_COPY(QAbstractItemView)
355  Q_PRIVATE_SLOT(d_func(), void _q_columnsAboutToBeRemoved(const QModelIndex&, int, int))
356  Q_PRIVATE_SLOT(d_func(), void _q_columnsRemoved(const QModelIndex&, int, int))
357  Q_PRIVATE_SLOT(d_func(), void _q_columnsInserted(const QModelIndex&, int, int))
358  Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(const QModelIndex&, int, int))
359  Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex&, int, int))
360  Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed())
361  Q_PRIVATE_SLOT(d_func(), void _q_layoutChanged())
362  Q_PRIVATE_SLOT(d_func(), void _q_headerDataChanged())
363 
364  friend class QTreeViewPrivate; // needed to compile with MSVC
365  friend class QAccessibleItemRow;
366  friend class QListModeViewBase;
367  friend class QListViewPrivate; // needed to compile for Symbian emulator
368 };
369 
370 Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractItemView::EditTriggers)
371 
372 #endif // QT_NO_ITEMVIEWS
373 
375 
377 
378 #endif // QABSTRACTITEMVIEW_H
void update()
GLint mode
Definition: GLee.h:4479
int int int int * dy
Definition: GLee.h:10535
virtual bool focusNextPrevChild(bool next)
#define QT_END_NAMESPACE
Definition: qglobal.h:128
#define Q_PROPERTY(text)
Definition: qobjectdefs.h:80
GLuint start
Definition: GLee.h:872
#define QT_BEGIN_HEADER
Definition: qglobal.h:141
void resizeEvent(QResizeEvent *)
State
The state the media producing object is in at the moment.
virtual void focusInEvent(QFocusEvent *)
virtual void focusOutEvent(QFocusEvent *)
Definition: qnamespace.h:54
void dropEvent(QDropEvent *)
#define Q_PRIVATE_SLOT(d, signature)
Definition: qobjectdefs.h:73
#define Q_SLOTS
Definition: qobjectdefs.h:71
void mouseDoubleClickEvent(QMouseEvent *)
#define Q_SIGNALS
Definition: qobjectdefs.h:72
#define Q_ENUMS(x)
Definition: qobjectdefs.h:84
Definition: qpoint.h:53
virtual void timerEvent(QTimerEvent *)
bool event(QEvent *)
GLenum GLenum GLvoid * row
Definition: GLee.h:893
#define QT_BEGIN_NAMESPACE
Definition: qglobal.h:127
void keyPressEvent(QKeyEvent *)
virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const
Definition: qmenu.h:72
virtual bool viewportEvent(QEvent *)
void mouseReleaseEvent(QMouseEvent *)
InputMethodQuery
Definition: qnamespace.h:1541
void mousePressEvent(QMouseEvent *)
void dragMoveEvent(QDragMoveEvent *)
DropAction
Definition: qnamespace.h:1597
#define Q_OBJECT
Definition: qobjectdefs.h:157
void mouseMoveEvent(QMouseEvent *)
TextElideMode
Definition: qnamespace.h:263
GLsizei const GLfloat * value
Definition: GLee.h:1742
GLuint GLuint end
Definition: GLee.h:872
Definition: qrect.h:58
GLenum GLenum GLvoid GLvoid * column
Definition: GLee.h:893
Definition: qsize.h:53
void dragLeaveEvent(QDragLeaveEvent *)
int int int * dx
Definition: GLee.h:10535
void dragEnterEvent(QDragEnterEvent *)
GLboolean reset
Definition: GLee.h:895
Definition: qdrag.h:61
#define Q_FLAGS(x)
Definition: qobjectdefs.h:85
#define QT_END_HEADER
Definition: qglobal.h:142
virtual void inputMethodEvent(QInputMethodEvent *)
GLsizeiptr size
Definition: GLee.h:1561
GLuint index
Definition: GLee.h:1704