diff --git a/examples/mycontrols/main.cpp b/examples/mycontrols/main.cpp index 83345c30..ab12613d 100644 --- a/examples/mycontrols/main.cpp +++ b/examples/mycontrols/main.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -84,10 +85,12 @@ class ContentBox : public QskBox struct Tickmarks final : public QskControl { public: + QSK_SUBCONTROLS(Ticks) using QskControl::QskControl; - QskTickmarksMetrics metrics; }; +QSK_SUBCONTROL(Tickmarks, Ticks) + class TickmarksSkinlet final : public QskSkinlet { Q_GADGET @@ -124,8 +127,9 @@ class TickmarksSkinlet final : public QskSkinlet tickmarks.setMediumTicks(medium); tickmarks.setMinorTicks(minor); + const auto metric = q->tickmarksMetricsHint(Tickmarks::Ticks); tickmarksNode->update( - Qt::darkGray, rect, { -100, +100 }, tickmarks, 1, Qt::Horizontal, Qt::AlignBottom, q->metrics ); + Qt::darkGray, rect, { -100, +100 }, tickmarks, 1, Qt::Horizontal, Qt::AlignBottom, metric ); return tickmarksNode; } @@ -150,9 +154,7 @@ class Window : public QskWindow { (void) new QskTextLabel("Custom", layout); auto* const tickmarks = new Tickmarks(layout); - tickmarks->metrics.setMajorRatio( 1.0 ); - tickmarks->metrics.setMediumRatio( 0.5 ); - tickmarks->metrics.setMinorRatio( 0.2 ); + tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.2, 0.5, 1.0 } ); auto* const skinlet = new TickmarksSkinlet; tickmarks->setSkinlet(skinlet); skinlet->setOwnedBySkinnable(true); @@ -160,9 +162,7 @@ class Window : public QskWindow { (void) new QskTextLabel("Custom (Major only)", layout); auto* const tickmarks = new Tickmarks(layout); - tickmarks->metrics.setMajorRatio( 1.0 ); - tickmarks->metrics.setMediumRatio( 0.0 ); - tickmarks->metrics.setMinorRatio( 0.0 ); + tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.0, 0.0, 1.0 } ); auto* const skinlet = new TickmarksSkinlet; tickmarks->setSkinlet(skinlet); skinlet->setOwnedBySkinnable(true); @@ -170,9 +170,7 @@ class Window : public QskWindow { (void) new QskTextLabel("Custom (Major + Minor only)", layout); auto* const tickmarks = new Tickmarks(layout); - tickmarks->metrics.setMajorRatio( 1.0 ); - tickmarks->metrics.setMediumRatio( 0.0 ); - tickmarks->metrics.setMinorRatio( 0.2 ); + tickmarks->setTickmarksMetricsHint(Tickmarks::Ticks, { 0.2, 0.0, 1.0 } ); auto* const skinlet = new TickmarksSkinlet; tickmarks->setSkinlet(skinlet); skinlet->setOwnedBySkinnable(true); @@ -195,10 +193,12 @@ class Window : public QskWindow void advance( qreal value ) override { - tickmarks.metrics.setMinorRatio( 0.1 + 0.1 * qFastSin(value * 2 * M_PI)); - tickmarks.metrics.setMediumRatio( 0.25 + 0.25 * qFastSin(value * 2 * M_PI)); - tickmarks.metrics.setMajorRatio( 0.5 + 0.5 * qFastSin(value * 2 * M_PI)); - tickmarks.update(); + const QskTickmarksMetrics metrics { + ( 0.1 + 0.1 * qFastSin( value * 2 * M_PI ) ), + ( 0.25 + 0.25 * qFastSin( value * 2 * M_PI ) ), + ( 0.5 + 0.5 * qFastSin( value * 2 * M_PI ) ) + }; + tickmarks.setTickmarksMetricsHint(Tickmarks::Ticks, metrics); } Tickmarks& tickmarks;