代码之家  ›  专栏  ›  技术社区  ›  JokerMartini

正在QDragEnterEvent和QDROPROPENT中检查QMimeData

  •  0
  • JokerMartini  · 技术社区  · 6 年前

    我想知道检查drag-enter和drop事件上的QMimeData是否是一种好的做法?在这种情况下,似乎有必要设置每个场景的接受/忽略事件。我只是想确定我没有做一些不好的练习。

    #include "lineeditpath.h"
    #include <QLineEdit>
    #include <QDragEnterEvent>
    #include <QMimeData>
    
    
    LineEditPath::LineEditPath(QWidget *parent) : QLineEdit(parent)
    {
        setAcceptDrops(true);
    }
    
    void LineEditPath::dragEnterEvent(QDragEnterEvent *event)
    {
        const QMimeData *mimeData = event->mimeData();
        if (mimeData->hasUrls() && mimeData->urls().count()==1) {
            event->accept();
        } else {
            event->ignore();
        }
    }
    
    void LineEditPath::dropEvent(QDropEvent *event)
    {
        const QMimeData *mimeData = event->mimeData();
        if (mimeData->hasUrls()) {
            setText(mimeData->urls().first().toLocalFile());
        }
        event->accept();
    }
    
    0 回复  |  直到 6 年前