#include "ctreewidget.h"
#include <QMouseEvent>
#include <QPainter>
#define BM_ICON_WIDTH 22
CTreeWidget::CTreeWidget(QWidget *parent) :
QTreeWidget(parent),m_child(true),m_newLine(QLine()), m_oldLine(QLine())
{
this->setSelectionMode(QAbstractItemView::SingleSelection);
//启用拖放
this->setDragEnabled(true);
//设置拖放
setAcceptDrops(true);
// this->viewport()->setAcceptDrops(true);
//设置显示将要被放置的位置
this->setDropIndicatorShown(true);
// //设置拖放模式为移动项目,否则为复制项目
this->setDragDropMode(QAbstractItemView::InternalMove);
this->setAttribute(Qt::WA_PaintOutsidePaintEvent);
}
void CTreeWidget::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist"))
event->accept();
else
event->ignore();
}
void CTreeWidget::dragMoveEvent(QDragMoveEvent *event)
{
if (event->mimeData()
QTreeWidget实现元素拖拽移动,并绘制插入点
最新推荐文章于 2024-07-18 17:05:15 发布
该博客详细介绍了如何在QTreeWidget中实现拖放功能,包括启用拖放操作、设置拖放模式以及绘制拖动过程中指示插入位置的线。通过重写dragEnterEvent、dragMoveEvent、dropEvent等方法,实现元素移动并更新其在树形视图中的位置。此外,还展示了如何绘制三角形指示插入点。
摘要由CSDN通过智能技术生成