From efb35223ac64216e1caf1bd50172332ba43022e7 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 13 Dec 2021 16:31:54 +0100 Subject: [PATCH] boxes example: Also draw gradient borders --- examples/boxes/Box.cpp | 18 +++++++++--------- examples/boxes/Box.h | 6 +++--- examples/boxes/main.cpp | 33 ++++++++++++++++++++++++--------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/examples/boxes/Box.cpp b/examples/boxes/Box.cpp index 0802642d..a1de2035 100644 --- a/examples/boxes/Box.cpp +++ b/examples/boxes/Box.cpp @@ -80,23 +80,23 @@ void Box::setBorder( BorderType type, QskRgbPalette::Theme theme ) break; case Flat: - setBorderColor( mid ); + setBorderGradient( mid ); break; case Raised1: - setBorderColors( light, light, dark, dark ); + setBorderGradients( light, light, dark, dark ); break; case Sunken1: - setBorderColors( dark, dark, light, light ); + setBorderGradients( dark, dark, light, light ); break; case Raised2: - setBorderColors( mid, light, mid, dark ); + setBorderGradients( mid, light, mid, dark ); break; case Sunken2: - setBorderColors( mid, dark, mid, light ); + setBorderGradients( mid, dark, mid, light ); break; } } @@ -117,16 +117,16 @@ void Box::setShape( qreal radiusX, qreal radiusY, Qt::SizeMode sizeMode ) QskBoxShapeMetrics( radiusX, radiusY, sizeMode ) ); } -void Box::setBorderColors( const QColor& left, const QColor& top, - const QColor& right, const QColor& bottom ) +void Box::setBorderGradients( const QskGradient& left, const QskGradient& top, + const QskGradient& right, const QskGradient& bottom ) { QskBoxBorderColors colors( left, top, right, bottom ); setBoxBorderColorsHint( QskBox::Panel, colors ); } -void Box::setBorderColor( const QColor& color ) +void Box::setBorderGradient( const QskGradient& gradient ) { - setBoxBorderColorsHint( QskBox::Panel, color ); + setBoxBorderColorsHint( QskBox::Panel, gradient ); } void Box::setBorderWidth( qreal left, qreal top, qreal right, qreal bottom ) diff --git a/examples/boxes/Box.h b/examples/boxes/Box.h index caf1f405..4ee0bd06 100644 --- a/examples/boxes/Box.h +++ b/examples/boxes/Box.h @@ -39,9 +39,9 @@ class Box : public QskBox void setShape( qreal radius, Qt::SizeMode ); void setShape( qreal radiusX, qreal radiusY, Qt::SizeMode ); - void setBorderColor( const QColor& ); - void setBorderColors( const QColor& left, const QColor& top, - const QColor& right, const QColor& bottom ); + void setBorderGradient( const QskGradient& ); + void setBorderGradients( const QskGradient& left, const QskGradient& top, + const QskGradient& right, const QskGradient& bottom ); void setBorderWidth( int ); void setBorderWidth( qreal left, qreal top, qreal right, qreal bottom ); diff --git a/examples/boxes/main.cpp b/examples/boxes/main.cpp index 7b057dc7..d195ae8e 100644 --- a/examples/boxes/main.cpp +++ b/examples/boxes/main.cpp @@ -232,25 +232,25 @@ static void addRectangles10( QskLinearBox* parent ) box = new Box( parent ); box->setBorderWidth( 10 ); - box->setBorderColor( borderTheme ); + box->setBorderGradient( borderTheme ); box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" ); box = new Box( parent ); box->setShape( 100, Qt::RelativeSize ); box->setBorderWidth( 5 ); - box->setBorderColor( borderTheme ); + box->setBorderGradient( borderTheme ); box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" ); box = new Box( parent ); box->setShape( 100, Qt::RelativeSize ); box->setBorderWidth( 5 ); - box->setBorderColor( borderTheme ); + box->setBorderGradient( borderTheme ); box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" ); box = new Box( parent ); box->setShape( 100, Qt::RelativeSize ); box->setBorderWidth( 5, 20, 30, 5 ); - box->setBorderColor( borderTheme ); + box->setBorderGradient( borderTheme ); box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" ); } @@ -333,32 +333,41 @@ static void addRectanglesRest( QskLinearBox* parent ) box = new Box( parent ); box->setBorderWidth( 20, 0, 40, 0 ); - box->setBorderColor( "DarkSeaGreen" ); + box->setBorderGradient( { "DarkSeaGreen" } ); box = new Box( parent ); box->setShape( 40, Qt::RelativeSize ); box->setBorderWidth( 20, 10, 30, 15 ); - box->setBorderColor( "DarkOrange" ); + box->setBorderGradient( { "DarkOrange" } ); box->setGradient( QskGradient::Vertical, "LightSteelBlue", "SteelBlue" ); box = new Box( parent ); box->setBorderWidth( 20, 0, 10, 20 ); - box->setBorderColor( "MediumSeaGreen" ); + box->setBorderGradient( { "MediumSeaGreen" } ); box->setGradient( "DodgerBlue" ); box = new Box( parent ); box->setShape( 20, Qt::AbsoluteSize ); box->setBorderWidth( 2, 10, 40, 2 ); - box->setBorderColor( "Crimson" ); + box->setBorderGradient( { "Crimson" } ); box->setGradient( QskRgb::WhiteSmoke ); box = new Box( parent ); box->setShape( 100, Qt::RelativeSize ); box->setBorderWidth( 5, 20, 5, 0 ); - box->setBorderColor( "CadetBlue" ); + box->setBorderGradient( { "CadetBlue" } ); box->setGradient( QskGradient::Vertical, "Gainsboro", "Seashell", "LightGray" ); } +static void addColoredBorderRectangles( QskLinearBox* parent ) +{ + Box* box; + + box = new Box( parent ); + box->setBorderWidth( 20 ); + box->setBorderGradient( { Qt::Vertical, Qt::magenta, Qt::cyan } ); +} + class TabView : public QskTabView { public: @@ -399,6 +408,12 @@ class TabView : public QskTabView addTab( tab4 ); //setCurrentIndex( count() - 1 ); // setCurrentTab( tab4 ) -> TODO #endif + + auto* tab5 = new QskLinearBox( Qt::Horizontal ); + addColoredBorderRectangles( tab5 ); + + addTab( tab5 ); + setCurrentIndex( count() - 1 ); } private: