boxes example: Also draw gradient borders

This commit is contained in:
Peter Hartmann 2021-12-13 16:31:54 +01:00
parent 696aa8f96a
commit efb35223ac
3 changed files with 36 additions and 21 deletions

View File

@ -80,23 +80,23 @@ void Box::setBorder( BorderType type, QskRgbPalette::Theme theme )
break; break;
case Flat: case Flat:
setBorderColor( mid ); setBorderGradient( mid );
break; break;
case Raised1: case Raised1:
setBorderColors( light, light, dark, dark ); setBorderGradients( light, light, dark, dark );
break; break;
case Sunken1: case Sunken1:
setBorderColors( dark, dark, light, light ); setBorderGradients( dark, dark, light, light );
break; break;
case Raised2: case Raised2:
setBorderColors( mid, light, mid, dark ); setBorderGradients( mid, light, mid, dark );
break; break;
case Sunken2: case Sunken2:
setBorderColors( mid, dark, mid, light ); setBorderGradients( mid, dark, mid, light );
break; break;
} }
} }
@ -117,16 +117,16 @@ void Box::setShape( qreal radiusX, qreal radiusY, Qt::SizeMode sizeMode )
QskBoxShapeMetrics( radiusX, radiusY, sizeMode ) ); QskBoxShapeMetrics( radiusX, radiusY, sizeMode ) );
} }
void Box::setBorderColors( const QColor& left, const QColor& top, void Box::setBorderGradients( const QskGradient& left, const QskGradient& top,
const QColor& right, const QColor& bottom ) const QskGradient& right, const QskGradient& bottom )
{ {
QskBoxBorderColors colors( left, top, right, bottom ); QskBoxBorderColors colors( left, top, right, bottom );
setBoxBorderColorsHint( QskBox::Panel, colors ); 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 ) void Box::setBorderWidth( qreal left, qreal top, qreal right, qreal bottom )

View File

@ -39,9 +39,9 @@ class Box : public QskBox
void setShape( qreal radius, Qt::SizeMode ); void setShape( qreal radius, Qt::SizeMode );
void setShape( qreal radiusX, qreal radiusY, Qt::SizeMode ); void setShape( qreal radiusX, qreal radiusY, Qt::SizeMode );
void setBorderColor( const QColor& ); void setBorderGradient( const QskGradient& );
void setBorderColors( const QColor& left, const QColor& top, void setBorderGradients( const QskGradient& left, const QskGradient& top,
const QColor& right, const QColor& bottom ); const QskGradient& right, const QskGradient& bottom );
void setBorderWidth( int ); void setBorderWidth( int );
void setBorderWidth( qreal left, qreal top, qreal right, qreal bottom ); void setBorderWidth( qreal left, qreal top, qreal right, qreal bottom );

View File

@ -232,25 +232,25 @@ static void addRectangles10( QskLinearBox* parent )
box = new Box( parent ); box = new Box( parent );
box->setBorderWidth( 10 ); box->setBorderWidth( 10 );
box->setBorderColor( borderTheme ); box->setBorderGradient( borderTheme );
box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" ); box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" );
box = new Box( parent ); box = new Box( parent );
box->setShape( 100, Qt::RelativeSize ); box->setShape( 100, Qt::RelativeSize );
box->setBorderWidth( 5 ); box->setBorderWidth( 5 );
box->setBorderColor( borderTheme ); box->setBorderGradient( borderTheme );
box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" ); box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" );
box = new Box( parent ); box = new Box( parent );
box->setShape( 100, Qt::RelativeSize ); box->setShape( 100, Qt::RelativeSize );
box->setBorderWidth( 5 ); box->setBorderWidth( 5 );
box->setBorderColor( borderTheme ); box->setBorderGradient( borderTheme );
box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" ); box->setGradient( QskGradient::Diagonal, "DeepPink", "DarkOrange", "HotPink" );
box = new Box( parent ); box = new Box( parent );
box->setShape( 100, Qt::RelativeSize ); box->setShape( 100, Qt::RelativeSize );
box->setBorderWidth( 5, 20, 30, 5 ); box->setBorderWidth( 5, 20, 30, 5 );
box->setBorderColor( borderTheme ); box->setBorderGradient( borderTheme );
box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" ); box->setGradient( QskGradient::Vertical, "DeepPink", "DarkOrange", "HotPink" );
} }
@ -333,32 +333,41 @@ static void addRectanglesRest( QskLinearBox* parent )
box = new Box( parent ); box = new Box( parent );
box->setBorderWidth( 20, 0, 40, 0 ); box->setBorderWidth( 20, 0, 40, 0 );
box->setBorderColor( "DarkSeaGreen" ); box->setBorderGradient( { "DarkSeaGreen" } );
box = new Box( parent ); box = new Box( parent );
box->setShape( 40, Qt::RelativeSize ); box->setShape( 40, Qt::RelativeSize );
box->setBorderWidth( 20, 10, 30, 15 ); box->setBorderWidth( 20, 10, 30, 15 );
box->setBorderColor( "DarkOrange" ); box->setBorderGradient( { "DarkOrange" } );
box->setGradient( QskGradient::Vertical, "LightSteelBlue", "SteelBlue" ); box->setGradient( QskGradient::Vertical, "LightSteelBlue", "SteelBlue" );
box = new Box( parent ); box = new Box( parent );
box->setBorderWidth( 20, 0, 10, 20 ); box->setBorderWidth( 20, 0, 10, 20 );
box->setBorderColor( "MediumSeaGreen" ); box->setBorderGradient( { "MediumSeaGreen" } );
box->setGradient( "DodgerBlue" ); box->setGradient( "DodgerBlue" );
box = new Box( parent ); box = new Box( parent );
box->setShape( 20, Qt::AbsoluteSize ); box->setShape( 20, Qt::AbsoluteSize );
box->setBorderWidth( 2, 10, 40, 2 ); box->setBorderWidth( 2, 10, 40, 2 );
box->setBorderColor( "Crimson" ); box->setBorderGradient( { "Crimson" } );
box->setGradient( QskRgb::WhiteSmoke ); box->setGradient( QskRgb::WhiteSmoke );
box = new Box( parent ); box = new Box( parent );
box->setShape( 100, Qt::RelativeSize ); box->setShape( 100, Qt::RelativeSize );
box->setBorderWidth( 5, 20, 5, 0 ); box->setBorderWidth( 5, 20, 5, 0 );
box->setBorderColor( "CadetBlue" ); box->setBorderGradient( { "CadetBlue" } );
box->setGradient( QskGradient::Vertical, "Gainsboro", "Seashell", "LightGray" ); 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 class TabView : public QskTabView
{ {
public: public:
@ -399,6 +408,12 @@ class TabView : public QskTabView
addTab( tab4 ); addTab( tab4 );
//setCurrentIndex( count() - 1 ); // setCurrentTab( tab4 ) -> TODO //setCurrentIndex( count() - 1 ); // setCurrentTab( tab4 ) -> TODO
#endif #endif
auto* tab5 = new QskLinearBox( Qt::Horizontal );
addColoredBorderRectangles( tab5 );
addTab( tab5 );
setCurrentIndex( count() - 1 );
} }
private: private: