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 )
|
: QskBoundedValueInput( parent )
|
||||||
{
|
{
|
||||||
setAlignmentHint( LeftLabel, Qt::AlignRight );
|
setAlignmentHint( LeftLabel, Qt::AlignRight );
|
||||||
setAlignmentHint( ValueText, Qt::AlignCenter | Qt::AlignHCenter );
|
setAlignmentHint( ValueText, Qt::AlignRight );
|
||||||
|
|
||||||
setBoundaries( 0, 100 );
|
setBoundaries( 0, 100 );
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,7 @@ QRectF LightDisplaySkinlet::subControlRect( const QskSkinnable* skinnable,
|
||||||
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
const qreal ticksSpacing = 4; // space between the ticks and the arc
|
||||||
|
|
||||||
if( subControl == LightDisplay::Groove
|
if( subControl == LightDisplay::Groove
|
||||||
|| subControl == LightDisplay::Panel
|
|| subControl == LightDisplay::Panel )
|
||||||
|| subControl == LightDisplay::ValueText )
|
|
||||||
{
|
{
|
||||||
QSizeF textSize = textLabelsSize( display );
|
QSizeF textSize = textLabelsSize( display );
|
||||||
QskArcMetrics arcMetrics = display->arcMetricsHint( LightDisplay::ColdAndWarmArc );
|
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 } );
|
const QRectF rect = arcRect.marginsAdded( { ticksWidth, ticksWidth, ticksWidth, ticksWidth } );
|
||||||
return rect;
|
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 )
|
else if( subControl == LightDisplay::LeftLabel )
|
||||||
{
|
{
|
||||||
const QRectF ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
const QRectF ticksRect = subControlRect( skinnable, contentsRect, LightDisplay::Tickmarks );
|
||||||
|
|
Loading…
Reference in New Issue