在QDragEnterEvent和QDropEvent

时间:2018-09-14 18:26:55

标签: c++ qt

我想知道在拖动进入和放下事件上同时检查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 个答案:

没有答案