QGIS API Documentation 3.29.0-Master (da8bb1db43)
qgsfloatingwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsfloatingwidget.h
3 -------------------
4 begin : April 2016
5 copyright : (C) Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15#ifndef QGSFLOATINGWIDGET_H
16#define QGSFLOATINGWIDGET_H
17
18#include <QWidget>
19#include <QPointer>
20#include "qgis_sip.h"
21#include "qgis_gui.h"
22
23class QgsFloatingWidgetEventFilter;
24
34class GUI_EXPORT QgsFloatingWidget: public QWidget
35{
36 Q_OBJECT
37 Q_PROPERTY( QWidget *anchorWidget READ anchorWidget WRITE setAnchorWidget NOTIFY anchorWidgetChanged )
38 Q_PROPERTY( AnchorPoint anchorPoint READ anchorPoint WRITE setAnchorPoint NOTIFY anchorPointChanged )
39 Q_PROPERTY( AnchorPoint anchorWidgetPoint READ anchorWidgetPoint WRITE setAnchorWidgetPoint NOTIFY anchorWidgetPointChanged )
40
41 public:
42
45 {
55 };
56 Q_ENUM( AnchorPoint )
57
58
62 QgsFloatingWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
63
70 void setAnchorWidget( QWidget *widget );
71
77 QWidget *anchorWidget();
78
84 AnchorPoint anchorPoint() const { return mFloatAnchorPoint; }
85
92 void setAnchorPoint( AnchorPoint point );
93
100 AnchorPoint anchorWidgetPoint() const { return mAnchorWidgetAnchorPoint; }
101
108 void setAnchorWidgetPoint( AnchorPoint point );
109
110 signals:
111
113 void anchorWidgetChanged( QWidget *widget );
114
117
120
121 protected:
122 void showEvent( QShowEvent *e ) override;
123 void paintEvent( QPaintEvent *e ) override;
124 void resizeEvent( QResizeEvent *e ) override;
125
126 private slots:
127
129 void onAnchorPointChanged();
130
131 private:
132
133 QPointer< QWidget > mAnchorWidget;
134 QgsFloatingWidgetEventFilter *mParentEventFilter = nullptr;
135 QgsFloatingWidgetEventFilter *mAnchorEventFilter = nullptr;
136 AnchorPoint mFloatAnchorPoint = BottomMiddle;
137 AnchorPoint mAnchorWidgetAnchorPoint = TopMiddle;
138
139};
140
141
142#ifndef SIP_RUN
143
145
146class QgsFloatingWidgetEventFilter: public QObject
147{
148 Q_OBJECT
149
150 public:
151
152 QgsFloatingWidgetEventFilter( QWidget *parent = nullptr );
153
154 bool eventFilter( QObject *object, QEvent *event ) override;
155
156 signals:
157
159 void anchorPointChanged();
160
161};
162
164
165#endif
166
167#endif // QGSFLOATINGWIDGET_H
A QWidget subclass for creating widgets which float outside of the normal Qt layout system.
void anchorWidgetPointChanged(QgsFloatingWidget::AnchorPoint point)
Emitted when the anchor widget point changes.
void anchorPointChanged(QgsFloatingWidget::AnchorPoint point)
Emitted when the anchor point changes.
AnchorPoint anchorWidgetPoint() const
Returns the anchor widget's anchor point, which corresponds to the point on the anchor widget which t...
AnchorPoint
Reference points for anchoring widget position.
@ BottomMiddle
Bottom center of widget.
@ TopMiddle
Top center of widget.
@ MiddleRight
Middle right of widget.
@ MiddleLeft
Middle left of widget.
@ BottomRight
Bottom-right of widget.
@ BottomLeft
Bottom-left of widget.
@ Middle
Middle of widget.
@ TopLeft
Top-left of widget.
@ TopRight
Top-right of widget.
void anchorWidgetChanged(QWidget *widget)
Emitted when the anchor widget changes.
QWidget * anchorWidget()
Returns the widget that the floating widget is "anchored" tto.
AnchorPoint anchorPoint() const
Returns the floating widget's anchor point, which corresponds to the point on the widget which should...
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
record about vertex coordinates and index of anchor to which it is snapped