#include "ToolMenuWidget.h" #include "UIObject.h" #include ToolMenu::ToolMenu(QWidget *parent) : QMenu(parent) { } void ToolMenu::showEvent(QShowEvent *event) { QMenu::showEvent(event); emit windowStateChanged(true); } void ToolMenu::hideEvent(QHideEvent *event) { QMenu::hideEvent(event); emit windowStateChanged(false); } ToolMenuWidget::ToolMenuWidget(QWidget *parent) : QToolButton(parent) { setCursor(Qt::PointingHandCursor); m_menu = new ToolMenu(this); QWidgetAction *actionWidget = new QWidgetAction(m_menu); m_containWidget = new QWidget(m_menu); actionWidget->setDefaultWidget(m_containWidget); m_menu->addAction(actionWidget); connect(this, &ToolMenuWidget::clicked, this, &ToolMenuWidget::popupMenu); } ToolMenuWidget::~ToolMenuWidget() { delete m_containWidget; delete m_menu; } void ToolMenuWidget::setTranslucentBackground() { m_menu->setWindowFlags(m_menu->windowFlags() | Qt::FramelessWindowHint); m_menu->setAttribute(Qt::WA_TranslucentBackground); // m_menu->setStyleSheet(UIObject::MQSSMenuStyle03); } void ToolMenuWidget::popupMenu() { QPoint pos = mapToGlobal(QPoint(0, 0)); pos.setY(pos.y() + 20); pos.setX(pos.x() - (m_containWidget->width() - width()) / 2); m_menu->exec(pos); }