QT QLineEdit如何支持文件拖放
在客户算软件中,人们往往可以通过点击按钮的方式来打开文件对话框,从而选择需要的文件,并将其显示在编辑框中,但是也有一些用户喜欢拖拽文件的方式来实现这一目的。那么 QLineEdit 是如何支持文件拖放?详见代码:
#ifndef DRAGDROPLINEEDIT_H
#define DRAGDROPLINEEDIT_H
#include <QLineEdit>
#include <QDragEnterEvent>
#include <QMimeData>
#include <QDropEvent>
#include <QDebug>
class DragDropLineEdit : public QLineEdit {
Q_OBJECT
public:
DragDropLineEdit(QWidget *parent = nullptr) : QLineEdit(parent) {
setAcceptDrops(true); // 允许接受拖放事件
}
protected:
void dragEnterEvent(QDragEnterEvent *event) override
{
if (event->mimeData()->hasUrls()) {
event->acceptProposedAction();
}
}
void dropEvent(QDropEvent *event) override
{
const QMimeData *mimeData = event->mimeData();
if (mimeData->hasUrls())
{
QList<QUrl> urlList = mimeData->urls();
if(0 < urlList.size()){
QString text = urlList.first().toLocalFile();
setText(text); // 设置文本框内容为文件路径或名称
}
}
}
};
#endif // DRAGDROPLINEEDIT_H