QGIS API Documentation 3.99.0-Master (21b3aa880ba)
Loading...
Searching...
No Matches
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 "qgis_gui.h"
19#include "qgis_sip.h"
20
21#include <QPointer>
22#include <QWidget>
23
24class QgsFloatingWidgetEventFilter;
25
35
36class GUI_EXPORT QgsFloatingWidget : public QWidget
37{
38 Q_OBJECT
39 Q_PROPERTY( QWidget *anchorWidget READ anchorWidget WRITE setAnchorWidget NOTIFY anchorWidgetChanged )
42
43 public:
57 Q_ENUM( AnchorPoint )
58
59
63 QgsFloatingWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
64
71 void setAnchorWidget( QWidget *widget );
72
78 QWidget *anchorWidget();
79
85 AnchorPoint anchorPoint() const { return mFloatAnchorPoint; }
86
93 void setAnchorPoint( AnchorPoint point );
94
101 AnchorPoint anchorWidgetPoint() const { return mAnchorWidgetAnchorPoint; }
102
109 void setAnchorWidgetPoint( AnchorPoint point );
110
111 signals:
112
114 void anchorWidgetChanged( QWidget *widget );
115
118
121
122 protected:
123 void showEvent( QShowEvent *e ) override;
124 void paintEvent( QPaintEvent *e ) override;
125 void resizeEvent( QResizeEvent *e ) override;
126
127 private slots:
128
130 void onAnchorPointChanged();
131
132 private:
133 QPointer<QWidget> mAnchorWidget;
134 QgsFloatingWidgetEventFilter *mParentEventFilter = nullptr;
135 QgsFloatingWidgetEventFilter *mAnchorEventFilter = nullptr;
136 AnchorPoint mFloatAnchorPoint = BottomMiddle;
137 AnchorPoint mAnchorWidgetAnchorPoint = TopMiddle;
138};
139
140
141#ifndef SIP_RUN
142
144
145class QgsFloatingWidgetEventFilter : public QObject
146{
147 Q_OBJECT
148
149 public:
150 QgsFloatingWidgetEventFilter( QWidget *parent = nullptr );
151
152 bool eventFilter( QObject *object, QEvent *event ) override;
153
154 signals:
155
157 void anchorPointChanged();
158};
159
161
162#endif
163
164#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 setAnchorWidget(QWidget *widget)
Sets the widget to "anchor" the floating widget to.
QgsFloatingWidget(QWidget *parent=nullptr)
Constructor for QgsFloatingWidget.
void setAnchorWidgetPoint(AnchorPoint point)
Returns the anchor widget's anchor point, which corresponds to the point on the anchor widget which t...
void resizeEvent(QResizeEvent *e) override
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 paintEvent(QPaintEvent *e) override
void setAnchorPoint(AnchorPoint point)
Sets the floating widget's anchor point, which corresponds to the point on the widget which should re...
AnchorPoint anchorWidgetPoint
void anchorWidgetChanged(QWidget *widget)
Emitted when the anchor widget changes.
QWidget * anchorWidget()
Returns the widget that the floating widget is "anchored" tto.
void showEvent(QShowEvent *e) override
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