33 connect( mShapeComboBox, &QComboBox::currentTextChanged,
this, &QgsLayoutShapeWidget::mShapeComboBox_currentIndexChanged );
34 connect( mCornerRadiusSpinBox,
static_cast < void ( QDoubleSpinBox::* )(
double )
> ( &QDoubleSpinBox::valueChanged ),
this, &QgsLayoutShapeWidget::mCornerRadiusSpinBox_valueChanged );
42 mainLayout->addWidget( mItemPropertiesWidget );
44 blockAllSignals(
true );
52 mRadiusUnitsComboBox->linkToWidget( mCornerRadiusSpinBox );
53 mRadiusUnitsComboBox->setConverter( &mShape->layout()->renderContext().measurementConverter() );
55 setGuiElementValues();
57 blockAllSignals(
false );
60 mShapeStyleButton->registerExpressionContextGenerator( mShape );
66 if ( mShape->layout() )
74 if ( mItemPropertiesWidget )
88 mShape = qobject_cast< QgsLayoutItemShape * >( item );
89 mItemPropertiesWidget->
setItem( mShape );
94 mShapeStyleButton->registerExpressionContextGenerator( mShape );
97 setGuiElementValues();
102 void QgsLayoutShapeWidget::blockAllSignals(
bool block )
104 mShapeComboBox->blockSignals( block );
105 mCornerRadiusSpinBox->blockSignals( block );
106 mRadiusUnitsComboBox->blockSignals( block );
107 mShapeStyleButton->blockSignals( block );
110 void QgsLayoutShapeWidget::setGuiElementValues()
117 blockAllSignals(
true );
119 mShapeStyleButton->setSymbol( mShape->symbol()->clone() );
121 mCornerRadiusSpinBox->setValue( mShape->cornerRadius().length() );
122 mRadiusUnitsComboBox->setUnit( mShape->cornerRadius().units() );
124 mShapeComboBox->setCurrentIndex( mShapeComboBox->findData( mShape->shapeType() ) );
125 toggleRadiusSpin( mShape->shapeType() );
127 blockAllSignals(
false );
130 void QgsLayoutShapeWidget::symbolChanged()
136 mShape->setSymbol( mShapeStyleButton->clonedSymbol<
QgsFillSymbol>() );
137 mShape->layout()->undoStack()->endCommand();
140 void QgsLayoutShapeWidget::mCornerRadiusSpinBox_valueChanged(
double val )
147 mShape->layout()->undoStack()->endCommand();
151 void QgsLayoutShapeWidget::radiusUnitsChanged()
157 mShape->setCornerRadius(
QgsLayoutMeasurement( mCornerRadiusSpinBox->value(), mRadiusUnitsComboBox->unit() ) );
158 mShape->layout()->undoStack()->endCommand();
162 void QgsLayoutShapeWidget::mShapeComboBox_currentIndexChanged(
const QString & )
169 mShape->layout()->undoStack()->beginCommand( mShape, tr(
"Change Shape Type" ) );
171 mShape->setShapeType( shape );
172 toggleRadiusSpin( shape );
174 mShape->layout()->undoStack()->endCommand();
184 mCornerRadiusSpinBox->setEnabled(
false );
189 mCornerRadiusSpinBox->setEnabled(
true );
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Layout item for basic filled shapes (e.g.
@ Rectangle
Rectangle shape.
@ Triangle
Triangle shape.
Base class for graphical items within a QgsLayout.
@ UndoShapeCornerRadius
Shape corner radius.
@ UndoShapeStyle
Shape symbol style.
int type() const override
Returns a unique graphics item type identifier.
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
void changed()
Emitted when the object's properties change.
void layerChanged(QgsVectorLayer *layer)
Emitted when the context's layer is changed.
void changed(QgsUnitTypes::LayoutUnit unit)
Emitted when the unit is changed.
Interface for master layout type objects, such as print layouts and reports.