3#include "qml_material/control/popup.hpp"
10Q_MOC_INCLUDE(
"QtQml/QQmlComponent")
14class QML_MATERIAL_API Menu :
public Popup {
16 QML_NAMED_ELEMENT(MenuBase)
17 Q_PROPERTY(QObject* contentModel READ contentModel CONSTANT FINAL)
18 Q_PROPERTY(
int count READ count NOTIFY countChanged FINAL)
20 int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL)
21 Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL)
22 Q_PROPERTY(QQmlComponent* delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
23 Q_PROPERTY(Menu* parentMenu READ parentMenu WRITE setParentMenu NOTIFY parentMenuChanged FINAL)
25 explicit Menu(QObject* parent =
nullptr);
27 QObject* contentModel()
const;
28 int count()
const {
return m_items.size(); }
29 int currentIndex()
const {
return m_index; }
30 void setCurrentIndex(
int);
31 QString title()
const {
return m_title; }
32 void setTitle(
const QString&);
33 QQmlComponent* delegate()
const;
34 void setDelegate(QQmlComponent*);
35 Menu* parentMenu()
const {
return m_parentMenu; }
36 void setParentMenu(Menu*);
37 Q_INVOKABLE QQuickItem* itemAt(
int)
const;
38 Q_INVOKABLE
int indexOf(QQuickItem*)
const;
39 Q_INVOKABLE
void addItem(QQuickItem*);
40 Q_INVOKABLE
void insertItem(
int, QQuickItem*);
41 Q_INVOKABLE
void moveItem(
int,
int);
42 Q_INVOKABLE QQuickItem* takeItem(
int);
43 Q_INVOKABLE
void removeItem(QQuickItem*);
44 Q_INVOKABLE
void dismiss();
45 Q_INVOKABLE
void openSubMenu(Menu*, QQuickItem* anchor);
46 Q_INVOKABLE
void popup(qreal x, qreal y);
47 Q_SIGNAL
void countChanged();
48 Q_SIGNAL
void currentIndexChanged();
49 Q_SIGNAL
void titleChanged();
50 Q_SIGNAL
void delegateChanged();
51 Q_SIGNAL
void parentMenuChanged();
55 QQmlObjectModel* m_model;
56 QList<QQuickItem*> m_items;
57 QHash<QQuickItem*, QMetaObject::Connection> m_destroyConnections;
58 QPointer<QQmlComponent> m_delegate;
59 QPointer<Menu> m_parentMenu;
60 QPointer<Menu> m_childMenu;
61 QMetaObject::Connection m_parentClosing;
62 QMetaObject::Connection m_parentDestroyed;