draglineedit.cpp 817 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "draglineedit.h"
  2. DragLineEdit::DragLineEdit(QWidget *parent)
  3. : QLineEdit(parent)
  4. {
  5. setAcceptDrops(true);
  6. }
  7. DragLineEdit::~DragLineEdit()
  8. {
  9. }
  10. void DragLineEdit::dragEnterEvent(QDragEnterEvent* event)
  11. {
  12. if (event->mimeData()->hasFormat("text/uri-list")) //只能打开文本文件
  13. {
  14. event->accept(); //可以在这个窗口部件上拖放对象
  15. }
  16. else
  17. {
  18. event->ignore();
  19. }
  20. }
  21. void DragLineEdit::dragMoveEvent(QDragMoveEvent* )
  22. {
  23. }
  24. void DragLineEdit::dropEvent(QDropEvent* e)
  25. {
  26. QList<QUrl> urls = e->mimeData()->urls();
  27. if (urls.isEmpty())
  28. return;
  29. QString fileName = urls.first().toLocalFile();
  30. if (fileName.isEmpty())
  31. {
  32. return;
  33. }
  34. if (!QFile::exists(fileName))
  35. {
  36. return;
  37. }
  38. this->setText(fileName);
  39. e->accept();
  40. emit this->returnPressed();
  41. }