menuentry.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "menuentry.h"
  2. #include <QApplication>
  3. #include <QTimer>
  4. MenuEntry *MenuEntry::active_label = nullptr;
  5. MenuEntry *MenuEntry::hover_label = nullptr;
  6. MenuEntry::MenuEntry(QWidget* parent, Qt::WindowFlags)
  7. : QLabel(parent) {
  8. connect(this, &MenuEntry::clicked, this, &MenuEntry::on_clicked);
  9. }
  10. MenuEntry::~MenuEntry() {}
  11. MenuEntry *MenuEntry::getActiveLabel()
  12. {
  13. return active_label;
  14. }
  15. void MenuEntry::setActiveLabel(MenuEntry *label)
  16. {
  17. active_label = label;
  18. }
  19. MenuEntry *MenuEntry::getHoverLabel()
  20. {
  21. return hover_label;
  22. }
  23. void MenuEntry::setHoverLabel(MenuEntry *label)
  24. {
  25. hover_label = label;
  26. }
  27. void MenuEntry::mousePressEvent(QMouseEvent* event) {
  28. event->ignore();
  29. if (active_label != this) {
  30. active_label = this;
  31. emit active_label_changed();
  32. emit clicked();
  33. }
  34. }
  35. void MenuEntry::mouseMoveEvent(QMouseEvent *event)
  36. {
  37. event->ignore();
  38. if (hover_label != this) {
  39. hover_label = this;
  40. emit hover_label_changed();
  41. }
  42. }
  43. void MenuEntry::on_clicked()
  44. {
  45. setStyleSheet(active_stylesheet);
  46. QTimer::singleShot(200, [this](){
  47. setStyleSheet(default_stylesheet);
  48. });
  49. }