tabpage background fixed

This commit is contained in:
Uwe Rathmann 2021-12-06 19:20:59 +01:00
parent 0a0c3dfb17
commit 985fcf1e2d
3 changed files with 57 additions and 15 deletions

View File

@ -4,25 +4,29 @@
*****************************************************************************/
#include "Page.h"
#include <QskRgbValue.h>
#include <QskBoxShapeMetrics.h>
Page::Page( Qt::Orientation orientation, QQuickItem* parent )
: QskLinearBox( orientation, parent )
, m_gradient( QskRgb::GhostWhite )
{
setBackgroundColor( Qt::gray );
setPanel( true );
setBoxShapeHint( QskBox::Panel, 8 );
setGradient( QskRgb::GhostWhite );
setMargins( 5 );
setMargins( 20 );
setPadding( 10 );
setSpacing( 10 );
}
void Page::setGradient( const QskGradient& gradient )
{
setGradientHint( QskBox::Panel, gradient );
if ( gradient != m_gradient )
{
m_gradient = gradient;
if ( parentItem() && isVisibleToParent() )
parentItem()->update();
}
}
QskGradient Page::gradient() const
{
return m_gradient;
}

View File

@ -6,10 +6,16 @@
#pragma once
#include <QskLinearBox.h>
#include <QskGradient.h>
class Page : public QskLinearBox
{
public:
Page( Qt::Orientation, QQuickItem* parent = nullptr );
void setGradient( const QskGradient& );
QskGradient gradient() const;
private:
QskGradient m_gradient;
};

View File

@ -19,6 +19,42 @@
#include <QGuiApplication>
namespace
{
class TabView : public QskTabView
{
public:
TabView( QQuickItem* parent = nullptr )
: QskTabView( parent )
{
setMargins( 10 );
setTabPosition( Qsk::Left );
setAutoFitTabs( true );
connect( this, &QskTabView::currentIndexChanged,
this, &TabView::updateViewPanel );
}
protected:
void aboutToShow() override
{
updateViewPanel();
}
private:
void updateViewPanel()
{
/*
We should have a better way to set individual colors
for each tab page background
*/
if ( auto page = dynamic_cast< const ::Page* >( currentItem() ) )
setGradientHint( QskTabView::Page, page->gradient() );
}
};
}
int main( int argc, char* argv[] )
{
#ifdef ITEM_STATISTICS
@ -32,11 +68,7 @@ int main( int argc, char* argv[] )
SkinnyFont::init( &app );
SkinnyShortcut::enable( SkinnyShortcut::AllShortcuts );
auto tabView = new QskTabView();
tabView->setMargins( 10 );
tabView->setTabPosition( Qsk::Left );
tabView->setAutoFitTabs( true );
auto tabView = new TabView();
tabView->addTab( "Labels", new LabelPage() );
tabView->addTab( "Sliders", new SliderPage() );