1
0

menu-button.cpp 548 B

123456789101112131415161718192021222324252627282930313233
  1. #include <QMenu>
  2. #include <QKeyEvent>
  3. #include <QMouseEvent>
  4. #include "menu-button.hpp"
  5. void MenuButton::keyPressEvent(QKeyEvent *event)
  6. {
  7. if (menu()) {
  8. switch (event->key()) {
  9. case Qt::Key_Enter:
  10. case Qt::Key_Return:
  11. emit clicked();
  12. return;
  13. case Qt::Key_Down:
  14. showMenu();
  15. return;
  16. }
  17. }
  18. QPushButton::keyPressEvent(event);
  19. }
  20. void MenuButton::mousePressEvent(QMouseEvent *event)
  21. {
  22. if (menu()) {
  23. if (width() - event->x() <= 15)
  24. showMenu();
  25. else
  26. setDown(true);
  27. } else {
  28. QPushButton::mousePressEvent(event);
  29. }
  30. }