+ /**
+ * Returns true if the selection of row items allows dragging.
+ * @return Returns true if the drag is acceptable.
+ */
+ virtual bool accept_drag() const = 0;
+
+ /**
+ * Drag the dragging items by the delta offset.
+ * @param delta the drag offset in pixels.
+ */
+ virtual void drag_items(const QPoint &delta) = 0;
+
+ /**
+ * Handles left mouse button press events.
+ * @param event the mouse event that triggered this handler.
+ */
+ void mouse_left_press_event(QMouseEvent *event);
+
+ /**
+ * Handles left mouse button release events.
+ * @param event the mouse event that triggered this handler.
+ */
+ void mouse_left_release_event(QMouseEvent *event);
+
+protected:
+ void mousePressEvent(QMouseEvent * event);
+ void mouseReleaseEvent(QMouseEvent *event);
+ void mouseMoveEvent(QMouseEvent *event);
+