From 985fcf1e2d9b0509558cc4bb7f7ad698ef0442f5 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Mon, 6 Dec 2021 19:20:59 +0100 Subject: [PATCH] tabpage background fixed --- examples/gallery/Page.cpp | 24 ++++++++++++---------- examples/gallery/Page.h | 6 ++++++ examples/gallery/main.cpp | 42 ++++++++++++++++++++++++++++++++++----- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/examples/gallery/Page.cpp b/examples/gallery/Page.cpp index 312bd7d1..0dbbfcf3 100644 --- a/examples/gallery/Page.cpp +++ b/examples/gallery/Page.cpp @@ -4,25 +4,29 @@ *****************************************************************************/ #include "Page.h" - #include -#include 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; } diff --git a/examples/gallery/Page.h b/examples/gallery/Page.h index 431ba883..f0404294 100644 --- a/examples/gallery/Page.h +++ b/examples/gallery/Page.h @@ -6,10 +6,16 @@ #pragma once #include +#include class Page : public QskLinearBox { public: Page( Qt::Orientation, QQuickItem* parent = nullptr ); + void setGradient( const QskGradient& ); + QskGradient gradient() const; + + private: + QskGradient m_gradient; }; diff --git a/examples/gallery/main.cpp b/examples/gallery/main.cpp index a7567fd0..4e5d278c 100644 --- a/examples/gallery/main.cpp +++ b/examples/gallery/main.cpp @@ -19,6 +19,42 @@ #include +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() );