Skip to content

Commit 7b6e322

Browse files
committed
[FEATURE] Transparency control for composer items
1 parent 32ec65c commit 7b6e322

File tree

5 files changed

+51
-0
lines changed

5 files changed

+51
-0
lines changed

src/app/composer/qgscomposeritemwidget.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ void QgsComposerItemWidget::setValuesForGuiElements()
355355
mItemIdLineEdit->blockSignals( true );
356356
mItemUuidLineEdit->blockSignals( true );
357357
mBlendModeCombo->blockSignals( true );
358+
mTransparencySlider->blockSignals( true );
358359
// mTransparencySpinBox->blockSignals( true );
359360

360361
mBackgroundColorButton->setColor( mItem->brush().color() );
@@ -373,6 +374,7 @@ void QgsComposerItemWidget::setValuesForGuiElements()
373374
mFrameGroupBox->setChecked( mItem->hasFrame() );
374375
mBackgroundGroupBox->setChecked( mItem->hasBackground() );
375376
mBlendModeCombo->setBlendMode( mItem->blendMode() );
377+
mTransparencySlider->setValue( mItem->transparency() );
376378

377379
// mTransparencySlider->blockSignals( false );
378380
mOutlineWidthSpinBox->blockSignals( false );
@@ -381,6 +383,7 @@ void QgsComposerItemWidget::setValuesForGuiElements()
381383
mItemIdLineEdit->blockSignals( false );
382384
mItemUuidLineEdit->blockSignals( false );
383385
mBlendModeCombo->blockSignals( false );
386+
mTransparencySlider->blockSignals( false );
384387
// mTransparencySpinBox->blockSignals( false );
385388
}
386389

@@ -393,6 +396,14 @@ void QgsComposerItemWidget::on_mBlendModeCombo_currentIndexChanged( int index )
393396
}
394397
}
395398

399+
void QgsComposerItemWidget::on_mTransparencySlider_valueChanged( int value )
400+
{
401+
if ( mItem )
402+
{
403+
mItem->setTransparency( value );
404+
}
405+
}
406+
396407
void QgsComposerItemWidget::on_mItemIdLineEdit_editingFinished()
397408
{
398409
if ( mItem )

src/app/composer/qgscomposeritemwidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBa
7171
void on_mLowerRightCheckBox_stateChanged( int state ) { Q_UNUSED( state ); changeItemPosition(); }
7272

7373
void on_mBlendModeCombo_currentIndexChanged( int index );
74+
void on_mTransparencySlider_valueChanged( int value );
7475

7576
void setValuesForGuiElements();
7677
void setValuesForGuiPositionElements();

src/core/composer/qgscomposeritem.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ QgsComposerItem::QgsComposerItem( QgsComposition* composition, bool manageZValue
5555
, mLastValidViewScaleFactor( -1 )
5656
, mRotation( 0 )
5757
, mBlendMode( QgsMapRenderer::BlendNormal )
58+
, mTransparency( 0 )
5859
, mLastUsedPositionMode( UpperLeft )
5960
, mId( "" )
6061
, mUuid( QUuid::createUuid().toString() )
@@ -75,6 +76,7 @@ QgsComposerItem::QgsComposerItem( qreal x, qreal y, qreal width, qreal height, Q
7576
, mLastValidViewScaleFactor( -1 )
7677
, mRotation( 0 )
7778
, mBlendMode( QgsMapRenderer::BlendNormal )
79+
, mTransparency( 0 )
7880
, mLastUsedPositionMode( UpperLeft )
7981
, mId( "" )
8082
, mUuid( QUuid::createUuid().toString() )
@@ -205,6 +207,9 @@ bool QgsComposerItem::_writeXML( QDomElement& itemElem, QDomDocument& doc ) cons
205207
//blend mode
206208
composerItemElem.setAttribute( "blendMode", QString::number( mBlendMode ) );
207209

210+
//transparency
211+
composerItemElem.setAttribute( "transparency", QString::number( mTransparency ) );
212+
208213
itemElem.appendChild( composerItemElem );
209214

210215
return true;
@@ -328,6 +333,9 @@ bool QgsComposerItem::_readXML( const QDomElement& itemElem, const QDomDocument&
328333
//blend mode
329334
setBlendMode(( QgsMapRenderer::BlendMode ) itemElem.attribute( "blendMode" , "0" ).toInt() );
330335

336+
//transparency
337+
setTransparency( itemElem.attribute( "transparency" , "0" ).toInt() );
338+
331339
return true;
332340
}
333341

@@ -883,6 +891,12 @@ void QgsComposerItem::setBlendMode( QgsMapRenderer::BlendMode blendMode )
883891
mEffect->setCompositionMode( QgsMapRenderer::getCompositionMode( mBlendMode ) );
884892
}
885893

894+
void QgsComposerItem::setTransparency( int transparency )
895+
{
896+
mTransparency = transparency;
897+
// Set the QGraphicItem's opacity
898+
setOpacity( 1. - ( transparency / 100. ) );
899+
}
886900

887901
void QgsComposerItem::hoverMoveEvent( QGraphicsSceneHoverEvent * event )
888902
{

src/core/composer/qgscomposeritem.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,11 @@ class CORE_EXPORT QgsComposerItem: public QObject, public QGraphicsRectItem
203203
/** Sets the item's composition blending mode*/
204204
void setBlendMode( QgsMapRenderer::BlendMode blendMode );
205205

206+
/** Returns the item's transparency */
207+
int transparency() const {return mTransparency;}
208+
/** Sets the item's transparency */
209+
void setTransparency( int transparency );
210+
206211
/**Composite operations for item groups do nothing per default*/
207212
virtual void addItem( QgsComposerItem* item ) { Q_UNUSED( item ); }
208213
virtual void removeItems() {}
@@ -320,6 +325,9 @@ class CORE_EXPORT QgsComposerItem: public QObject, public QGraphicsRectItem
320325

321326
QgsComposerEffect *mEffect;
322327

328+
/**Item transparency*/
329+
int mTransparency;
330+
323331
/**The item's position mode
324332
@note: this member was added in version 2.0*/
325333
ItemPositionMode mLastUsedPositionMode;

src/ui/qgscomposeritemwidgetbase.ui

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,23 @@
356356
<item row="0" column="1">
357357
<widget class="QgsBlendModeComboBox" name="mBlendModeCombo"/>
358358
</item>
359+
<item row="1" column="0">
360+
<widget class="QLabel" name="labelTransparency">
361+
<property name="text">
362+
<string>Transparency</string>
363+
</property>
364+
</widget>
365+
</item>
366+
<item row="1" column="1">
367+
<widget class="QSlider" name="mTransparencySlider">
368+
<property name="maximum">
369+
<number>100</number>
370+
</property>
371+
<property name="orientation">
372+
<enum>Qt::Horizontal</enum>
373+
</property>
374+
</widget>
375+
</item>
359376
</layout>
360377
</widget>
361378
</item>

0 commit comments

Comments
 (0)