Перетаскивание элементов QListView

Пожалуйста, помогите мне решить эту проблему... У меня есть QListView с левой стороны и QWidget с другой стороны. В QListView я добавил несколько элементов, используя QStandardItem. Теперь я хочу перетащить QListView элементов на другую сторону QWidget, и я должен сделать то же самое и с QWidget. Я могу перетаскивать свои QListView элементы внутри самого QListView с помощью

listView.setAcceptDrops(true);
listView.setDragEnabled(true);
listView.setDragDropMode(QAbstractItemView::InternalMove); 

это отлично работает только внутри QListView. Я хочу перетащить элементы QListView в другой виджет. Как я могу это сделать? Я знаю, что мне нужно обрабатывать такие события, как

void dropEvent(QDropEvent *);
void dragMoveEvent(QDragMoveEvent *);
void dragEnterEvent(QDragEnterEvent *);
void mousePressEvent(QMouseEvent *);

я только что пробовал вот так

void Example::dragMoveEvent(QDragMoveEvent *e)
{
    // The event needs to be accepted here
    e->accept();
}

void Example::dragEnterEvent(QDragEnterEvent *e)
{
    // Set the drop action to be the proposed action.
    e->acceptProposedAction();
}

void Example::dropEvent(QDropEvent *e)
{
    qDebug("Items Dropped");
}

Как я только что попробовал с некоторым qDebug() , это работает, когда я перетаскиваю элемент из моего QListView и бросаю его в QWidget и получаю вывод как "Предметы выброшены". Но я не знаю, как привести сюда свои QListView товары.


person New Moon    schedule 16.10.2012    source источник


Ответы (1)


Вам не нужно подклассифицировать представление. Все перетаскивание обрабатывается моделью, поэтому вы должны создать подкласс своей стандартной модели. Вы можете взглянуть на модель ссылка на подклассы. Конечно, вы также должны изменить режим перетаскивания вашего представления на QAbstractItemView::DragDrop, чтобы получить внешнее перетаскивание.

person quinmars    schedule 20.10.2012