TaskListModel: expand view's item when dropping onto it

This commit is contained in:
Robert Haschke 2017-11-07 22:06:36 +01:00
parent fc9ca1b624
commit c516a537f5
3 changed files with 33 additions and 1 deletions

View File

@ -41,6 +41,7 @@
#include <ros/console.h>
#include <QMimeData>
#include <qevent.h>
namespace moveit_rviz_plugin {
@ -524,6 +525,21 @@ void TaskListModelPrivate::_q_sourceDataChanged(const QModelIndex &topLeft, cons
q_ptr->dataChanged(mapFromSource(topLeft), mapFromSource(bottomRight), roles);
}
TaskListView::TaskListView(QWidget *parent)
: QTreeView(parent)
{
}
// dropping onto an item, should expand this item
void TaskListView::dropEvent(QDropEvent *event)
{
QModelIndex index = indexAt(event->pos());
QTreeView::dropEvent(event);
if (event->isAccepted())
expand(index);
}
}
#include "moc_task_list_model.cpp"

View File

@ -44,12 +44,14 @@
#include <moveit_task_constructor/Solution.h>
#include <QAbstractItemModel>
#include <QTreeView>
#include <memory>
namespace moveit_rviz_plugin {
/** Base class to represent a single local or remote Task as a Qt model. */
class BaseTaskModel : public QAbstractItemModel {
Q_OBJECT
protected:
unsigned int flags_ = 0;
@ -140,4 +142,13 @@ private:
MOVEIT_CLASS_FORWARD(TaskListModel)
typedef std::weak_ptr<TaskListModel> TaskListModelWeakPtr;
class TaskListView : public QTreeView {
Q_OBJECT
public:
TaskListView(QWidget *parent = nullptr);
void dropEvent(QDropEvent *event) override;
};
}

View File

@ -49,7 +49,7 @@
</layout>
</item>
<item>
<widget class="QTreeView" name="tasks_view">
<widget class="moveit_rviz_plugin::TaskListView" name="tasks_view">
<property name="contextMenuPolicy">
<enum>Qt::ActionsContextMenu</enum>
</property>
@ -92,6 +92,11 @@
<extends>QTreeView</extends>
<header location="global">rviz/properties/property_tree_widget.h</header>
</customwidget>
<customwidget>
<class>moveit_rviz_plugin::TaskListView</class>
<extends>QTreeView</extends>
<header>task_list_model.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>