You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

sendtextedit.cpp 1.6 kB

8 years ago
8 years ago
8 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "sendtextedit.h"
  2. #include <QDragEnterEvent>
  3. #include <QDropEvent>
  4. #include <QMimeData>
  5. #include <QFileInfo>
  6. #include <QDebug>
  7. SendTextEdit::SendTextEdit(QWidget *parent)
  8. :QTextEdit(parent)
  9. {
  10. setAcceptDrops(true);
  11. installEventFilter(this);
  12. }
  13. void SendTextEdit::newLine()
  14. {
  15. append("");
  16. }
  17. void SendTextEdit::dragEnterEvent(QDragEnterEvent *e)
  18. {
  19. if (e->mimeData()->hasUrls())
  20. {
  21. auto urls = e->mimeData()->urls();
  22. for (auto url : urls)
  23. {
  24. if (QFileInfo(url.toLocalFile()).isFile())
  25. {
  26. e->accept();
  27. return;
  28. }
  29. }
  30. }
  31. else
  32. {
  33. QTextEdit::dragEnterEvent(e);
  34. }
  35. }
  36. void SendTextEdit::dropEvent(QDropEvent *e)
  37. {
  38. if (e->mimeData()->hasUrls())
  39. {
  40. auto urls = e->mimeData()->urls();
  41. QList<QFileInfo> files;
  42. for (auto url : urls)
  43. {
  44. files.append(QFileInfo(url.toLocalFile()));
  45. e->accept();
  46. }
  47. emit acceptDropFiles(files);
  48. }
  49. else
  50. {
  51. QTextEdit::dropEvent(e);
  52. }
  53. }
  54. bool SendTextEdit::eventFilter(QObject *, QEvent * e)
  55. {
  56. if (e->type() == QEvent::KeyPress)
  57. {
  58. auto keyEvent = static_cast<QKeyEvent*>(e);
  59. auto enter = keyEvent->key() == Qt::Key_Return;
  60. auto ctrl = keyEvent->modifiers() == Qt::ControlModifier;
  61. if (enter && ctrl)
  62. {
  63. emit ctrlEnterPressed();
  64. return true;
  65. }
  66. else if (enter)
  67. {
  68. emit enterPressed();
  69. return true;
  70. }
  71. }
  72. return false;
  73. }

mac下的“飞秋”大多数只是飞鸽传书协议,而且未发现令人满意的开源项目,所以基于c++与qt实现了基础的飞秋协议。

Contributors (1)