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;
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 )

View File

@ -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 );

View File

@ -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: