13class QML_MATERIAL_API
Panel :
public Control {
15 QML_NAMED_ELEMENT(PanelBase)
16 Q_CLASSINFO(
"DefaultProperty",
"contentData")
17 Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
18 Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY
19 contentChildrenChanged FINAL)
20 Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth
21 NOTIFY contentWidthChanged FINAL)
22 Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET
23 resetContentHeight NOTIFY contentHeightChanged FINAL)
26 explicit Panel(QQuickItem* parent =
nullptr);
29 QQmlListProperty<QObject> contentData();
30 QQmlListProperty<QQuickItem> contentChildren();
31 qreal contentWidth()
const;
32 qreal contentHeight()
const;
33 void setContentWidth(qreal value);
34 void setContentHeight(qreal value);
35 void resetContentWidth();
36 void resetContentHeight();
38 Q_SIGNAL
void contentWidthChanged();
39 Q_SIGNAL
void contentHeightChanged();
40 Q_SIGNAL
void contentChildrenChanged();
43 QSizeF measureImplicitContent()
const override;
44 void componentComplete()
override;
45 void mousePressEvent(QMouseEvent* event)
override;
46 void mouseReleaseEvent(QMouseEvent* event)
override;
47 void mouseMoveEvent(QMouseEvent* event)
override;
48 void touchEvent(QTouchEvent* event)
override;
51 QSizeF calculateContentSize()
const;
52 void observeContentItem();
53 void observeChildren();
54 void updateContentSize();
56 QSizeF m_content_size { 0, 0 };
57 std::optional<qreal> m_content_width;
58 std::optional<qreal> m_content_height;
59 QMetaObject::Connection m_slot_connection;
60 QList<QMetaObject::Connection> m_host_connections;
61 QList<QMetaObject::Connection> m_child_connections;