QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsdatadefinedsizelegendwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsdatadefinedsizelegendwidget.h
3 --------------------------------------
4 Date : June 2017
5 Copyright : (C) 2017 by Martin Dobias
6 Email : wonder dot sk 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
16#ifndef QGSDATADEFINEDSIZELEGENDWIDGET_H
17#define QGSDATADEFINEDSIZELEGENDWIDGET_H
18
19#include "ui_qgsdatadefinedsizelegendwidget.h"
20
21#include <memory>
22
23#include "qgis_gui.h"
24#include "qgis_sip.h"
25#include "qgsdoublevalidator.h"
26#include "qgspanelwidget.h"
27#include "qgsproperty.h"
28
29#include <QStyledItemDelegate>
30
31class QStandardItemModel;
32
34class QgsLayerTree;
37class QgsMapCanvas;
38class QgsMarkerSymbol;
39class QgsProperty;
40class QgsVectorLayer;
41
47class GUI_EXPORT QgsDataDefinedSizeLegendWidget : public QgsPanelWidget, private Ui::QgsDataDefinedSizeLegendWidget
48{
49 Q_OBJECT
50 public:
51
58 explicit QgsDataDefinedSizeLegendWidget( const QgsDataDefinedSizeLegend *ddsLegend, const QgsProperty &ddSize, QgsMarkerSymbol *overrideSymbol SIP_TRANSFER, QgsMapCanvas *canvas = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
60
63
64 signals:
65
66 private slots:
67 void updatePreview();
68 void changeSymbol();
69 void addSizeClass();
70 void removeSizeClass();
71 void onSizeClassesChanged();
72
73 private:
74 std::unique_ptr<QgsMarkerSymbol> mSourceSymbol;
75 bool mOverrideSymbol = false;
76 QgsProperty mSizeProperty;
77 QgsLayerTreeModel *mPreviewModel = nullptr;
78 QgsLayerTree *mPreviewTree = nullptr;
79 QgsLayerTreeLayer *mPreviewLayerNode = nullptr;
80 QgsVectorLayer *mPreviewLayer = nullptr;
81 QgsMapCanvas *mMapCanvas = nullptr;
82 QStandardItemModel *mSizeClassesModel = nullptr;
83};
84
85#ifndef SIP_RUN
87
89class SizeClassDelegate : public QStyledItemDelegate
90{
91 Q_OBJECT
92
93 public:
94 SizeClassDelegate( QObject *parent )
95 : QStyledItemDelegate( parent )
96 {
97 }
98
99 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &, const QModelIndex & ) const override
100 {
101 QLineEdit *lineEdit = new QLineEdit( parent );
102 QgsDoubleValidator *validator = new QgsDoubleValidator( 0, 1e6, 1, lineEdit );
103 lineEdit->setValidator( validator );
104 return lineEdit;
105 }
106};
107
109#endif
110
111#endif // QGSDATADEFINEDSIZELEGENDWIDGET_H
QgsDataDefinedSizeLegendWidget(const QgsDataDefinedSizeLegend *ddsLegend, const QgsProperty &ddSize, QgsMarkerSymbol *overrideSymbol, QgsMapCanvas *canvas=nullptr, QWidget *parent=nullptr)
Creates the dialog and initializes the content to what is passed in the legend configuration (may be ...
QgsDataDefinedSizeLegend * dataDefinedSizeLegend() const
Returns configuration as set up in the dialog (may be nullptr). Ownership is passed to the caller.
Object that keeps configuration of appearance of marker symbol's data-defined size in legend.
Layer tree node points to a map layer.
A model representing the layer tree, including layers and groups of layers.
Namespace with helper functions for layer tree operations.
Map canvas is a class for displaying all GIS data types on a canvas.
A marker symbol type, for rendering Point and MultiPoint geometries.
QgsPanelWidget(QWidget *parent=nullptr)
Base class for any widget that can be shown as an inline panel.
A store for object properties.
Represents a vector layer which manages a vector based dataset.
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_FACTORY
Definition qgis_sip.h:84