21#include <QStyleOption>
23#include "moc_qgstabbarproxystyle.cpp"
27QgsTabBarProxyStyle::QgsTabBarProxyStyle( QTabBar *tabBar )
31void QgsTabBarProxyStyle::drawControl( ControlElement element,
const QStyleOption *option, QPainter *painter,
const QWidget *widget )
const
33 QTabBar *tabBar { qobject_cast<QTabBar *>( parent() ) };
37 if ( element == CE_TabBarTab && mTabStyles.contains( tabBar->tabAt( option->rect.center() ) ) )
39 if (
const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>( option ) )
45 painter->setFont( style.
font );
47 QStyleOptionTab opt { *tab };
50 opt.palette.setBrush( QPalette::WindowText, style.
color );
52 QProxyStyle::drawControl( element, &opt, painter, widget );
58 QProxyStyle::drawControl( element, option, painter, widget );
63 mTabStyles.insert( tabIndex, style );
66const QMap<int, QgsAttributeEditorElement::LabelStyle> &QgsTabBarProxyStyle::tabStyles()
const
72QgsTabBar::QgsTabBar( QWidget *parent )
76void QgsTabBar::setTabBarStyle( QgsTabBarProxyStyle *tabStyle )
78 mTabBarStyle = tabStyle;
81QSize QgsTabBar::tabSizeHint(
int index )
const
83 if ( mTabBarStyle->tabStyles().contains( index ) )
88 const QSize s = QTabBar::tabSizeHint( index );
89 const QFontMetrics fm( font() );
90 const int w = fm.horizontalAdvance( tabText( index ) );
91 const QFont f = tabStyle.
font;
92 const QFontMetrics bfm( f );
93 const int bw = bfm.horizontalAdvance( tabText( index ) );
94 return QSize( s.width() - w + bw, s.height() );
98 return QTabBar::tabSizeHint( index );
103 return QTabBar::tabSizeHint( index );
A QProxyStyle subclass which correctly sets the base style to match the QGIS application style,...
Scoped object for saving and restoring a QPainter object's state.
The TabStyle struct defines color and font overrides for form fields, tabs and groups labels.
bool overrideColor
Override label color.
bool overrideFont
Override label font.