implement Icon Menu

This commit is contained in:
laserpants 2016-04-25 09:16:54 +03:00
parent 7e7f78bc13
commit 75d4dd7194
3 changed files with 15 additions and 11 deletions

View File

@ -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();

View File

@ -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);
} }

View File

@ -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