implement Icon Menu
This commit is contained in:
parent
7e7f78bc13
commit
75d4dd7194
|
@ -55,7 +55,7 @@ void IconButton::mousePressEvent(QMouseEvent *event)
|
||||||
if (!_overlay)
|
if (!_overlay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QPoint p(_overlay->width(), _overlay->height());
|
const QPoint p(_overlay->width(), _overlay->height());
|
||||||
_overlay->addRipple(p/2, iconSize().width());
|
_overlay->addRipple(p/2, iconSize().width());
|
||||||
|
|
||||||
emit clicked();
|
emit clicked();
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
|
#include <QLayout>
|
||||||
#include "iconmenu.h"
|
#include "iconmenu.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
|
|
||||||
MenuOverlay::MenuOverlay(QWidget *parent)
|
MenuOverlay::MenuOverlay(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
setAttribute(Qt::WA_TransparentForMouseEvents);
|
//setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
setAttribute(Qt::WA_NoSystemBackground);
|
//setAttribute(Qt::WA_NoSystemBackground);
|
||||||
}
|
}
|
||||||
|
|
||||||
MenuOverlay::~MenuOverlay()
|
MenuOverlay::~MenuOverlay()
|
||||||
|
@ -15,16 +16,16 @@ MenuOverlay::~MenuOverlay()
|
||||||
|
|
||||||
IconMenu::IconMenu(const QIcon &icon, QWidget *parent)
|
IconMenu::IconMenu(const QIcon &icon, QWidget *parent)
|
||||||
: IconButton(icon, parent),
|
: IconButton(icon, parent),
|
||||||
_overlay(new MenuOverlay(parent)),
|
_menuOverlay(new MenuOverlay(parent)),
|
||||||
_geometryWidget(0),
|
_menu(new Menu(_menuOverlay)),
|
||||||
_menu(new Menu)
|
_menuGeometryWidget(0)
|
||||||
{
|
{
|
||||||
_menu->setParent(_overlay);
|
|
||||||
|
|
||||||
_menu->addMenuItem("Maps");
|
_menu->addMenuItem("Maps");
|
||||||
_menu->addMenuItem("Books");
|
_menu->addMenuItem("Books");
|
||||||
_menu->addMenuItem("Flights");
|
_menu->addMenuItem("Flights");
|
||||||
_menu->addMenuItem("Apps");
|
_menu->addMenuItem("Apps");
|
||||||
|
|
||||||
|
setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
IconMenu::~IconMenu()
|
IconMenu::~IconMenu()
|
||||||
|
@ -34,7 +35,10 @@ IconMenu::~IconMenu()
|
||||||
bool IconMenu::event(QEvent *event)
|
bool IconMenu::event(QEvent *event)
|
||||||
{
|
{
|
||||||
if (QEvent::ParentChange == event->type()) {
|
if (QEvent::ParentChange == event->type()) {
|
||||||
_menu->setParent(parentWidget());
|
_menuOverlay->setParent(parentWidget());
|
||||||
|
|
||||||
|
QSize hint = _menu->layout()->sizeHint();
|
||||||
|
_menuOverlay->setGeometry(0, 0, hint.width(), hint.height());
|
||||||
}
|
}
|
||||||
return IconButton::event(event);
|
return IconButton::event(event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,9 @@ protected:
|
||||||
bool event(QEvent *event) Q_DECL_OVERRIDE;
|
bool event(QEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MenuOverlay *const _overlay;
|
MenuOverlay *const _menuOverlay;
|
||||||
QWidget *_geometryWidget;
|
|
||||||
Menu *const _menu;
|
Menu *const _menu;
|
||||||
|
QWidget *_menuGeometryWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ICONMENU_H
|
#endif // ICONMENU_H
|
||||||
|
|
Loading…
Reference in New Issue