QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
30 #include <QDomElement>
34 #include <QGraphicsProxyWidget>
48 c->setDesignerForm( mDesignerForm );
54 mDesignerForm = uiFile;
55 mDesignerWidget.reset( createDesignerWidget( uiFile ) );
56 if ( mDesignerWidget )
58 mMinimumSize = mDesignerWidget->minimumSize();
62 newFill->
setColor( mDesignerWidget->palette().color( QPalette::Window ) );
71 QWidget *QgsFormAnnotation::createDesignerWidget(
const QString &filePath )
73 QFile file( filePath );
74 if ( !file.open( QFile::ReadOnly ) )
81 loader.setWorkingDirectory( fi.dir() );
82 QWidget *widget = loader.load( &file,
nullptr );
92 for (
int i = 0; i < attrs.count(); ++i )
94 if ( i < fields.
count() )
96 QWidget *attWidget = widget->findChild<QWidget *>( fields.
at( i ).
name() );
103 QVariantList additionalFieldValues;
104 for (
const QString &additionalField : additionalFields )
107 additionalFieldValues.insert( index, attrs.at( index ) );
109 eww->
setValues( attrs.at( i ), additionalFieldValues );
120 if ( !mDesignerWidget )
125 const double scaleFactor = context.
painter()->device()->logicalDpiX() / 96.0;
126 context.
painter()->scale( scaleFactor, scaleFactor );
129 mDesignerWidget->setFixedSize( size.toSize() );
130 context.
painter()->setBrush( Qt::NoBrush );
131 context.
painter()->setPen( Qt::NoPen );
132 mDesignerWidget->render( context.
painter(), QPoint( 0, 0 ) );
137 if ( mDesignerWidget )
139 QSizeF widgetMinSize = mMinimumSize;
145 return QSizeF( 0, 0 );
151 if ( mDesignerWidget )
153 return mDesignerWidget->sizeHint();
157 return QSizeF( 0, 0 );
163 QDomElement formAnnotationElem = doc.createElement( QStringLiteral(
"FormAnnotationItem" ) );
164 formAnnotationElem.setAttribute( QStringLiteral(
"designerForm" ), mDesignerForm );
165 _writeXml( formAnnotationElem, doc, context );
166 elem.appendChild( formAnnotationElem );
171 mDesignerForm = itemElem.attribute( QStringLiteral(
"designerForm" ), QString() );
172 QDomElement annotationElem = itemElem.firstChildElement( QStringLiteral(
"AnnotationItem" ) );
173 if ( !annotationElem.isNull() )
175 _readXml( annotationElem, context );
178 if ( !
mapLayer() && itemElem.hasAttribute( QStringLiteral(
"vectorLayer" ) ) )
183 mDesignerWidget.reset( createDesignerWidget( mDesignerForm ) );
187 newFill->
setColor( mDesignerWidget->palette().color( QPalette::Window ) );
197 mDesignerWidget.reset( createDesignerWidget( mDesignerForm ) );
201 newFill->
setColor( mDesignerWidget->palette().color( QPalette::Window ) );
static QgsEditorWidgetRegistry * editorWidgetRegistry()
Returns the global editor widget registry, used for managing all known edit widget factories.
void _readXml(const QDomElement &annotationElem, const QgsReadWriteContext &context)
Reads common annotation properties from a DOM element.
QgsMargins contentsMargin() const
Returns the margins (in millimeters) between the outside of the frame and the annotation content.
The class is used as a container of context for various read/write operations on other objects.
int count() const
Returns number of items.
Container of fields for a vector layer.
Contains information about the context of a rendering operation.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsMapLayer * mapLayer() const
Returns the map layer associated with the annotation.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
Abstract base class for annotation items which are drawn over a map.
QgsFillSymbol * fillSymbol() const
Returns the symbol that is used for rendering the annotation frame.
QgsFeature associatedFeature() const
Returns the feature associated with the annotation, or an invalid feature if none has been set.
void _writeXml(QDomElement &itemElem, QDomDocument &doc, const QgsReadWriteContext &context) const
Writes common annotation properties to a DOM element.
Scoped object for saving and restoring a QPainter object's state.
virtual void setAssociatedFeature(const QgsFeature &feature)
Sets the feature associated with the annotation.
void setFrameSizeMm(QSizeF size)
Sets the size (in millimeters) of the annotation's frame (the main area in which the annotation's con...
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
void setColor(const QColor &color)
Sets the color for the symbol.
Represents a vector layer which manages a vector based data sets.
QgsFillSymbol * clone() const override
Returns a deep copy of this symbol.
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
void appearanceChanged()
Emitted whenever the annotation's appearance changes.
void setFillSymbol(QgsFillSymbol *symbol)
Sets the fill symbol used for rendering the annotation frame.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QPainter * painter()
Returns the destination QPainter for the render operation.
QgsField at(int i) const
Gets field at particular index (must be in range 0..N-1)
This class contains context information for attribute editor widgets.
int indexFromName(const QString &fieldName) const
Gets the field index from the field name.
void copyCommonProperties(QgsAnnotation *target) const
Copies common annotation properties to the targe annotation.
void setMapLayer(QgsMapLayer *layer)
Sets the map layer associated with the annotation.