QgsComposerLabel::QgsComposerLabel( QgsComposition *composition ) : QgsComposerItem( composition ) , mHtmlState( 0 ) , mHtmlUnitsToMM( 1.0 ) , mHtmlLoaded( false ) , mMarginX( 1.0 ) , mMarginY( 1.0 ) , mFontColor( QColor( 0, 0, 0 ) ) , mHAlignment( Qt::AlignLeft ) , mVAlignment( Qt::AlignTop ) , mExpressionLayer( nullptr ) , mDistanceArea( nullptr ) { mDistanceArea = new QgsDistanceArea(); mHtmlUnitsToMM = htmlUnitsToMM(); //get default composer font from settings QSettings settings; QString defaultFontString = settings.value( QStringLiteral( "/Composer/defaultFont" ) ).toString(); if ( !defaultFontString.isEmpty() ) { mFont.setFamily( defaultFontString ); } //default to a 10 point font size mFont.setPointSizeF( 10 ); //default to no background setBackgroundEnabled( false ); //a label added while atlas preview is enabled needs to have the expression context set, //otherwise fields in the label aren't correctly evaluated until atlas preview feature changes (#9457) refreshExpressionContext(); if ( mComposition ) { //connect to atlas feature changes //to update the expression context connect( &mComposition->atlasComposition(), SIGNAL( featureChanged( QgsFeature* ) ), this, SLOT( refreshExpressionContext() ) ); } mWebPage = new QgsWebPage( this ); mWebPage->setIdentifier( tr( "Composer label item" ) ); mWebPage->setNetworkAccessManager( QgsNetworkAccessManager::instance() ); //This makes the background transparent. Found on http://blog.qt.digia.com/blog/2009/06/30/transparent-qwebview-or-qwebpage/ QPalette palette = mWebPage->palette(); palette.setBrush( QPalette::Base, Qt::transparent ); mWebPage->setPalette( palette ); //webPage->setAttribute(Qt::WA_OpaquePaintEvent, false); //this does not compile, why ? mWebPage->mainFrame()->setZoomFactor( 10.0 ); mWebPage->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff ); mWebPage->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff ); connect( mWebPage, SIGNAL( loadFinished( bool ) ), SLOT( loadingHtmlFinished( bool ) ) ); }
QgsComposerLabel::QgsComposerLabel( QgsComposition *composition ) : QgsComposerItem( composition ) , mHtmlState( 0 ) , mHtmlUnitsToMM( 1.0 ) , mHtmlLoaded( false ) , mMarginX( 1.0 ) , mMarginY( 1.0 ) , mFontColor( QColor( 0, 0, 0 ) ) , mHAlignment( Qt::AlignLeft ) , mVAlignment( Qt::AlignTop ) , mExpressionLayer( nullptr ) , mDistanceArea( nullptr ) { mDistanceArea = new QgsDistanceArea(); mHtmlUnitsToMM = htmlUnitsToMM(); //get default composer font from settings QSettings settings; QString defaultFontString = settings.value( "/Composer/defaultFont" ).toString(); if ( !defaultFontString.isEmpty() ) { mFont.setFamily( defaultFontString ); } //default to a 10 point font size mFont.setPointSizeF( 10 ); //default to no background setBackgroundEnabled( false ); //a label added while atlas preview is enabled needs to have the expression context set, //otherwise fields in the label aren't correctly evaluated until atlas preview feature changes (#9457) refreshExpressionContext(); if ( mComposition ) { //connect to atlas feature changes //to update the expression context connect( &mComposition->atlasComposition(), SIGNAL( featureChanged( QgsFeature* ) ), this, SLOT( refreshExpressionContext() ) ); } }
QgsLayoutItemLabel::QgsLayoutItemLabel( QgsLayout *layout ) : QgsLayoutItem( layout ) { mDistanceArea.reset( new QgsDistanceArea() ); mHtmlUnitsToLayoutUnits = htmlUnitsToLayoutUnits(); //get default layout font from settings QgsSettings settings; QString defaultFontString = settings.value( QStringLiteral( "LayoutDesigner/defaultFont" ), QVariant(), QgsSettings::Gui ).toString(); if ( !defaultFontString.isEmpty() ) { mFont.setFamily( defaultFontString ); } //default to a 10 point font size mFont.setPointSizeF( 10 ); //default to no background setBackgroundEnabled( false ); //a label added while atlas preview is enabled needs to have the expression context set, //otherwise fields in the label aren't correctly evaluated until atlas preview feature changes (#9457) refreshExpressionContext(); mWebPage.reset( new QgsWebPage( this ) ); mWebPage->setIdentifier( tr( "Layout label item" ) ); mWebPage->setNetworkAccessManager( QgsNetworkAccessManager::instance() ); //This makes the background transparent. Found on http://blog.qt.digia.com/blog/2009/06/30/transparent-qwebview-or-qwebpage/ QPalette palette = mWebPage->palette(); palette.setBrush( QPalette::Base, Qt::transparent ); mWebPage->setPalette( palette ); mWebPage->mainFrame()->setZoomFactor( 10.0 ); mWebPage->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff ); mWebPage->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff ); connect( mWebPage.get(), &QWebPage::loadFinished, this, &QgsLayoutItemLabel::loadingHtmlFinished ); }
void QgsLayoutItemLabel::refresh() { QgsLayoutItem::refresh(); refreshExpressionContext(); }