(对不起我的英语不好)
我目前正在尝试在 QTreeWidget 中进行拖放。所以我把相应的设置和方法 dropEvent :
class TreeWidget : public QTreeWidget
{
protected:
virtual void dropEvent(QDropEvent *event) override
{
QModelIndex index = indexAt(event->pos());
if (!index.isValid()) { // just in case
event->setDropAction(Qt::IgnoreAction);
return;
}
QTreeWidgetItem* item = itemFromIndex(index);
qDebug() << "drop on item" << item->text(0);
QTreeWidget::dropEvent(event);
}
};
int main()
{
TreeWidget *listWidget = new TreeWidget;
listWidget->setSelectionMode(QAbstractItemView::SingleSelection);
listWidget->setDragEnabled(true);
listWidget->viewport()->setAcceptDrops(true);
listWidget->setDropIndicatorShown(true);
listWidget->setDragDropMode(QAbstractItemView::InternalMove);
}
但就我而言,我只想移动父项。在代码中,我得到了目标项目,但如何得到拖动项目?
我是否要重载拖动方法?从 mousePressEvent 自己启动拖动?最好的方法是什么?
谢谢 !