implement Icon Menu and examples
This commit is contained in:
parent
59203ba9cd
commit
7e7f78bc13
|
@ -1,10 +1,40 @@
|
||||||
|
#include <QEvent>
|
||||||
#include "iconmenu.h"
|
#include "iconmenu.h"
|
||||||
|
#include "menu.h"
|
||||||
|
|
||||||
IconMenu::IconMenu(QWidget *parent)
|
MenuOverlay::MenuOverlay(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
|
setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
|
setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuOverlay::~MenuOverlay()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
IconMenu::IconMenu(const QIcon &icon, QWidget *parent)
|
||||||
|
: IconButton(icon, parent),
|
||||||
|
_overlay(new MenuOverlay(parent)),
|
||||||
|
_geometryWidget(0),
|
||||||
|
_menu(new Menu)
|
||||||
|
{
|
||||||
|
_menu->setParent(_overlay);
|
||||||
|
|
||||||
|
_menu->addMenuItem("Maps");
|
||||||
|
_menu->addMenuItem("Books");
|
||||||
|
_menu->addMenuItem("Flights");
|
||||||
|
_menu->addMenuItem("Apps");
|
||||||
}
|
}
|
||||||
|
|
||||||
IconMenu::~IconMenu()
|
IconMenu::~IconMenu()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IconMenu::event(QEvent *event)
|
||||||
|
{
|
||||||
|
if (QEvent::ParentChange == event->type()) {
|
||||||
|
_menu->setParent(parentWidget());
|
||||||
|
}
|
||||||
|
return IconButton::event(event);
|
||||||
|
}
|
||||||
|
|
|
@ -2,14 +2,34 @@
|
||||||
#define ICONMENU_H
|
#define ICONMENU_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include "iconbutton.h"
|
||||||
|
|
||||||
class IconMenu : public QWidget
|
class Menu;
|
||||||
|
|
||||||
|
class MenuOverlay : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit IconMenu(QWidget *parent = 0);
|
explicit MenuOverlay(QWidget *parent = 0);
|
||||||
|
~MenuOverlay();
|
||||||
|
};
|
||||||
|
|
||||||
|
class IconMenu : public IconButton
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit IconMenu(const QIcon &icon, QWidget *parent = 0);
|
||||||
~IconMenu();
|
~IconMenu();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool event(QEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
MenuOverlay *const _overlay;
|
||||||
|
QWidget *_geometryWidget;
|
||||||
|
Menu *const _menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ICONMENU_H
|
#endif // ICONMENU_H
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
|
#include <QIcon>
|
||||||
#include "iconmenuexamples.h"
|
#include "iconmenuexamples.h"
|
||||||
#include "components/iconmenu.h"
|
#include "components/iconmenu.h"
|
||||||
#include "exampleview.h"
|
#include "exampleview.h"
|
||||||
|
@ -11,7 +12,7 @@ IconMenuExamples::IconMenuExamples(QWidget *parent)
|
||||||
QLayout *layout = widget()->layout();
|
QLayout *layout = widget()->layout();
|
||||||
|
|
||||||
{
|
{
|
||||||
IconMenu *iconMenu = new IconMenu;
|
IconMenu *iconMenu = new IconMenu(QIcon("../qt-material-widgets/face.svg"));
|
||||||
|
|
||||||
ExampleView *view = new ExampleView;
|
ExampleView *view = new ExampleView;
|
||||||
view->setWidget(iconMenu);
|
view->setWidget(iconMenu);
|
||||||
|
|
Loading…
Reference in New Issue