TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musictoolmenuwidget.cpp
Go to the documentation of this file.
1 #include "musictoolmenuwidget.h"
2 
3 #include <QWidgetAction>
4 
6  : QMenu(parent)
7 {
8 
9 }
10 
11 void MusicToolMenu::showEvent(QShowEvent *event)
12 {
13  QMenu::showEvent(event);
14  Q_EMIT windowStateChanged(true);
15 }
16 
17 void MusicToolMenu::hideEvent(QHideEvent *event)
18 {
19  QMenu::hideEvent(event);
20  Q_EMIT windowStateChanged(false);
21 }
22 
23 
24 
26  : QToolButton(parent)
27 {
28  setCursor(Qt::PointingHandCursor);
29 
30  m_menu = new MusicToolMenu(this);
31  QWidgetAction *actionWidget = new QWidgetAction(m_menu);
32  m_containWidget = new QWidget(m_menu);
33 
34  actionWidget->setDefaultWidget(m_containWidget);
35  m_menu->addAction(actionWidget);
36 
37  connect(this, SIGNAL(clicked()), SLOT(popupMenu()));
38 }
39 
41 {
42  delete m_containWidget;
43  delete m_menu;
44 }
45 
47 {
48  m_menu->setWindowFlags(m_menu->windowFlags() | Qt::FramelessWindowHint);
49  m_menu->setAttribute(Qt::WA_TranslucentBackground);
50  m_menu->setStyleSheet(TTK::UI::MenuStyle03);
51 }
52 
54 {
55  QPoint pos = mapToGlobal(QPoint(0, 0));
56  pos.setY(pos.y() - m_containWidget->height() - 10);
57  pos.setX(pos.x() - (m_containWidget->width() - width()) / 2);
58 
59  m_menu->exec(pos);
60 }
virtual void showEvent(QShowEvent *event) overridefinal
virtual void hideEvent(QHideEvent *event) overridefinal
MusicToolMenu * m_menu
void windowStateChanged(bool state)
static const QString MenuStyle03
MusicToolMenu(QWidget *parent=nullptr)
The class of the tool menu.
MusicToolMenuWidget(QWidget *parent=nullptr)