menu-button.cpp 576 B

12345678910111213141516171819202122232425262728293031323334
  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. case Qt::Key_Space:
  15. showMenu();
  16. return;
  17. }
  18. }
  19. QPushButton::keyPressEvent(event);
  20. }
  21. void MenuButton::mousePressEvent(QMouseEvent *event)
  22. {
  23. if (menu()) {
  24. if (width() - event->pos().x() <= 30)
  25. showMenu();
  26. else
  27. setDown(true);
  28. } else {
  29. QPushButton::mousePressEvent(event);
  30. }
  31. }