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.

chooseemojiwidget.cpp 1.0 kB

8 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "chooseemojiwidget.h"
  2. #include <QMouseEvent>
  3. #include "emoji.h"
  4. ChooseEmojiWidget::ChooseEmojiWidget(QWidget* parent)
  5. :QLabel(parent), mIndex(-1)
  6. {
  7. setMouseTracking(true);
  8. }
  9. void ChooseEmojiWidget::mousePressEvent(QMouseEvent *event)
  10. {
  11. mIndex = getIndex(event->x(), event->y());
  12. }
  13. void ChooseEmojiWidget::mouseMoveEvent(QMouseEvent *event)
  14. {
  15. auto index = getIndex(event->x(), event->y());
  16. if (index >= 0 && index < EMOJI_LEN)
  17. {
  18. emit hesitate(index);
  19. }
  20. else
  21. {
  22. emit hesitate(-1);
  23. }
  24. }
  25. void ChooseEmojiWidget::mouseReleaseEvent(QMouseEvent *event)
  26. {
  27. auto index = getIndex(event->x(), event->y());
  28. if (mIndex == index && mIndex >= 0 && mIndex < EMOJI_LEN)
  29. {
  30. emit choose(mIndex);
  31. }
  32. mIndex = -1;
  33. }
  34. int ChooseEmojiWidget::getIndex(int x, int y)
  35. {
  36. int col = x/25;
  37. int row = y/25;
  38. auto index = row * EMOJI_BMP_COL + col;
  39. if (index >= 0 && index < EMOJI_LEN)
  40. return index;
  41. return -1;
  42. }

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

Contributors (1)