ToolMenuWidget.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "ToolMenuWidget.h"
  2. #include "UIObject.h"
  3. #include <QWidgetAction>
  4. ToolMenu::ToolMenu(QWidget *parent) : QMenu(parent) { }
  5. void ToolMenu::showEvent(QShowEvent *event)
  6. {
  7. QMenu::showEvent(event);
  8. emit windowStateChanged(true);
  9. }
  10. void ToolMenu::hideEvent(QHideEvent *event)
  11. {
  12. QMenu::hideEvent(event);
  13. emit windowStateChanged(false);
  14. }
  15. ToolMenuWidget::ToolMenuWidget(QWidget *parent) : QToolButton(parent)
  16. {
  17. setCursor(Qt::PointingHandCursor);
  18. m_menu = new ToolMenu(this);
  19. QWidgetAction *actionWidget = new QWidgetAction(m_menu);
  20. m_containWidget = new QWidget(m_menu);
  21. actionWidget->setDefaultWidget(m_containWidget);
  22. m_menu->addAction(actionWidget);
  23. connect(this, &ToolMenuWidget::clicked, this, &ToolMenuWidget::popupMenu);
  24. }
  25. ToolMenuWidget::~ToolMenuWidget()
  26. {
  27. delete m_containWidget;
  28. delete m_menu;
  29. }
  30. void ToolMenuWidget::setTranslucentBackground()
  31. {
  32. m_menu->setWindowFlags(m_menu->windowFlags() | Qt::FramelessWindowHint);
  33. m_menu->setAttribute(Qt::WA_TranslucentBackground);
  34. // m_menu->setStyleSheet(UIObject::MQSSMenuStyle03);
  35. }
  36. void ToolMenuWidget::popupMenu()
  37. {
  38. QPoint pos = mapToGlobal(QPoint(0, 0));
  39. pos.setY(pos.y() + 20);
  40. pos.setX(pos.x() - (m_containWidget->width() - width()) / 2);
  41. m_menu->exec(pos);
  42. }