37 Q_PROPERTY(QQmlListProperty<QObject> data READ data)
38 Q_CLASSINFO(
"DefaultProperty",
"data")
40 Q_PROPERTY(QQuickItem* anchor READ anchor WRITE setAnchor NOTIFY anchorChanged)
41 Q_PROPERTY(
int popupWidth READ popupWidth WRITE setPopupWidth NOTIFY popupWidthChanged)
42 Q_PROPERTY(
int popupHeight READ popupHeight WRITE setPopupHeight NOTIFY popupHeightChanged)
43 Q_PROPERTY(
PopupEdge popupEdge READ popupEdge WRITE setPopupEdge NOTIFY popupEdgeChanged)
44 Q_PROPERTY(
int gap READ gap WRITE setGap NOTIFY gapChanged)
45 Q_PROPERTY(
bool popupVisible READ isPopupVisible WRITE setPopupVisible NOTIFY popupVisibleChanged)
62 [[nodiscard]] QQmlListProperty<QObject> data();
64 [[nodiscard]] QQuickItem* anchor() const;
65 void setAnchor(QQuickItem* anchor);
67 [[nodiscard]]
int popupWidth() const;
68 void setPopupWidth(
int width);
70 [[nodiscard]]
int popupHeight() const;
71 void setPopupHeight(
int height);
76 [[nodiscard]]
int gap() const;
79 [[nodiscard]]
bool isPopupVisible() const;
80 void setPopupVisible(
bool visible);
82 Q_INVOKABLE
void close();
86 void popupWidthChanged();
87 void popupHeightChanged();
88 void popupEdgeChanged();
90 void popupVisibleChanged();
95 [[nodiscard]] QRect computeAnchorRect() const;
101 [[nodiscard]] QRect resolvedAnchorRect() const;
108 void reapplyIfVisible();
113 bool repositionInPlace();
117 QPointer<QQuickItem> m_anchor;
118 int m_popupWidth = 200;
119 int m_popupHeight = 200;
122 bool m_popupVisible = false;
123 std::unique_ptr<QQuickWindow> m_popupWindow;
130 QQuickItem* m_contentItem =
nullptr;