28 mPercentPlacementComboBox->addItem(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionLabelAnchorCenter.svg" ) ), tr(
"Center of Line" ), 0.5 );
29 mPercentPlacementComboBox->addItem(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionLabelAnchorStart.svg" ) ), tr(
"Start of Line" ), 0.0 );
30 mPercentPlacementComboBox->addItem(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionLabelAnchorEnd.svg" ) ), tr(
"End of Line" ), 1.0 );
31 mPercentPlacementComboBox->addItem(
QgsApplication::getThemeIcon( QStringLiteral(
"/mActionLabelAnchorCustom.svg" ) ), tr(
"Custom…" ), -1.0 );
39 connect( mPercentPlacementComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
this, [ = ](
int )
44 if ( mPercentPlacementComboBox->currentData().toDouble() < 0 )
45 mCustomPlacementSpinBox->setEnabled(
true );
48 mCustomPlacementSpinBox->setEnabled( false );
50 mCustomPlacementSpinBox->setValue( mPercentPlacementComboBox->currentData().toDouble() * 100 );
51 mBlockSignals = false;
54 connect( mCustomPlacementSpinBox, qOverload<double>( &QDoubleSpinBox::valueChanged ),
this, [ = ](
double )
60 connect( mAnchorTypeComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
this, [ = ](
int )
65 updateAnchorTypeHint();
68 connect( mClippingComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
this, [ = ](
int )
76 updateAnchorTypeHint();
83 if ( comboIndex >= 0 )
85 mPercentPlacementComboBox->setCurrentIndex( comboIndex );
90 mPercentPlacementComboBox->setCurrentIndex( mPercentPlacementComboBox->findData( -1.0 ) );
93 mCustomPlacementSpinBox->setEnabled( mPercentPlacementComboBox->currentData().toDouble() < 0 );
95 mAnchorTypeComboBox->setCurrentIndex( mAnchorTypeComboBox->findData(
static_cast< int >(
settings.
anchorType() ) ) );
96 mClippingComboBox->setCurrentIndex( mClippingComboBox->findData(
static_cast< int >(
settings.
anchorClipping() ) ) );
97 mBlockSignals =
false;
104 if ( mPercentPlacementComboBox->currentData().toDouble() >= 0 )
124 void QgsLabelLineAnchorWidget::updateAnchorTypeHint()
130 hint = tr(
"Labels are placed exactly on the label anchor only, and no other fallback placements are permitted." );
134 hint = tr(
"The label anchor is treated as a hint for the preferred label placement, but other placements close to the anchor point are permitted." );
137 mAnchorTypeHintLabel->setText( hint );
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
Contains settings related to how the label engine places and formats labels for line features (or pol...
AnchorType
Line anchor types.
@ Strict
Line anchor is a strict placement, and other placements are not permitted.
@ HintOnly
Line anchor is a hint for preferred placement only, but other placements close to the hint are permit...
void setLineAnchorPercent(double percent)
Sets the percent along the line at which labels should be placed.
AnchorClipping
Clipping behavior for line anchor calculation.
@ UseEntireLine
Entire original feature line geometry is used when calculating the line anchor for labels.
@ UseVisiblePartsOfLine
Only visible parts of lines are considered when calculating the line anchor for labels.
AnchorType anchorType() const
Returns the line anchor type, which dictates how the lineAnchorPercent() setting is handled.
void setAnchorClipping(AnchorClipping clipping)
Sets the line anchor clipping mode, which dictates how line strings are clipped before calculating th...
double lineAnchorPercent() const
Returns the percent along the line at which labels should be placed.
void setAnchorType(AnchorType type)
Sets the line anchor type, which dictates how the lineAnchorPercent() setting is handled.
AnchorClipping anchorClipping() const
Returns the line anchor clipping mode, which dictates how line strings are clipped before calculating...
@ LineAnchorPercent
Portion along line at which labels should be anchored (since QGIS 3.16)
@ LineAnchorClipping
Clipping mode for line anchor calculation (since QGIS 3.20)
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
QgsProperty property(int key) const override
Returns a matching property from the collection, if one exists.
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
Represents a vector layer which manages a vector based data sets.