Qt在QTreeWidget中实现拖动操作
发布日期:2021-11-15 14:57:54 浏览次数:34 分类:技术文章

本文共 1573 字,大约阅读时间需要 5 分钟。

拖动操作分为拖动和放下两种状态

拖动状态主要关于两个事件

void CTreeWidget::mousePressEvent(QMouseEvent *ev){    qDebug()<<"Enter mousePressEvent";    if (ev->button() == Qt::LeftButton)    {        m_beginDragPoint = ev->pos();    }    QTreeWidget::mousePressEvent(ev);}void CTreeWidget::mouseMoveEvent(QMouseEvent *ev){     qDebug()<<"Enter mouseMoveEvent";    if (ev->buttons() & Qt::LeftButton)    {        int dragDistance = (ev->pos() - m_beginDragPoint).manhattanLength();        if (dragDistance > QApplication::startDragDistance())        {            QByteArray data;            QDataStream stream(&data,QIODevice::WriteOnly);            stream << "ccc"<<"0";            QMimeData *mimeData = new QMimeData;            mimeData->setData("camera-info",data);            QDrag *drag = new QDrag(this);            drag->setMimeData(mimeData);//            drag->setPixmap(QPixmap(":/res/monitor/drag_play"));            drag->exec();        }    }    QTreeWidget::mouseMoveEvent(ev);}

放下状态也是关于两个事件

void CTreeWidget::dragEnterEvent(QDragEnterEvent *ev){    if(ev->mimeData()->hasFormat("camera-info"))        ev->acceptProposedAction();}void CTreeWidget::dropEvent(QDropEvent *ev){    QByteArray data = ev->mimeData()->data("camera-info");    QDataStream stream(&data,QIODevice::ReadOnly);    QString cameraId;    QString cameraType;    QString cameraName;    int login_handle;    stream >>cameraId >>cameraType >>login_handle >>cameraName;    QString info="camraName:"+cameraName+" cameraId:"+cameraId+" cameraType:"+cameraType;    qDebug()<<">------ drop:"<

其他要执行的处理就是在这四个函数里添加

 

 

C++交流群:585225803

转载地址:https://blog.csdn.net/qq_39742146/article/details/84338554 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:QThread中的一些理解
下一篇:窗口handle的作用

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月29日 02时14分18秒