IOT example: Make text label retain position when changing value (#150)
This commit is contained in:
parent
ccc26d0bf8
commit
2b78922b43
|
@ -26,7 +26,7 @@ LightDisplay::LightDisplay( QQuickItem* parent )
|
|||
: QskBoundedValueInput( parent )
|
||||
{
|
||||
setAlignmentHint( LeftLabel, Qt::AlignRight );
|
||||
setAlignmentHint( ValueText, Qt::AlignCenter | Qt::AlignHCenter );
|
||||
setAlignmentHint( ValueText, Qt::AlignRight );
|
||||
|
||||
setBoundaries( 0, 100 );
|
||||
|
||||
|
|
|
@ -34,8 +34,7 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
|||
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
||||
|
||||
if( subControl == LightDisplay::Groove
|
||||
|| subControl == LightDisplay::Panel
|
||||
|| subControl == LightDisplay::ValueText )
|
||||
|| subControl == LightDisplay::Panel )
|
||||
{
|
||||
QSizeF textSize = textLabelsSize( display );
|
||||
QskArcMetrics arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc );
|
||||
|
@ -67,6 +66,16 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
|||
const QRectF rect = arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
||||
return rect;
|
||||
}
|
||||
else if( subControl == LightDisplay::ValueText )
|
||||
{
|
||||
QRectF valueTextRect = subControlRect( skinnable, contentsRect,
|
||||
LightDisplay::Panel );
|
||||
const QFontMetricsF fm( skinnable->effectiveFont( subControl ) );
|
||||
const qreal fontWidth = fm.width( QStringLiteral( "100 %" ) );
|
||||
const QPointF center = valueTextRect.center();
|
||||
const QRectF rect( center.x() - fontWidth / 2, center.y() - fm.height() / 2, fontWidth, fm.height() );
|
||||
return rect;
|
||||
}
|
||||
else if( subControl == LightDisplay::LeftLabel )
|
||||
{
|
||||
const QRectF ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
||||
|
|
Loading…
Reference in New Issue