19#include <QStyleOption>
21#include "moc_qgstabbarproxystyle.cpp"
25QgsTabBarProxyStyle::QgsTabBarProxyStyle( QTabBar *tabBar )
29void QgsTabBarProxyStyle::drawControl( ControlElement element,
const QStyleOption *option, QPainter *painter,
const QWidget *widget )
const
31 QTabBar *tabBar { qobject_cast<QTabBar *>( parent() ) };
35 if ( element == CE_TabBarTab && mTabStyles.contains( tabBar->tabAt( option->rect.center() ) ) )
37 if (
const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>( option ) )
43 painter->setFont( style.
font );
45 QStyleOptionTab opt { *tab };
48 opt.palette.setBrush( QPalette::WindowText, style.
color );
50 QProxyStyle::drawControl( element, &opt, painter, widget );
57 QProxyStyle::drawControl( element, option, painter, widget );
62 mTabStyles.insert( tabIndex, style );
65const QMap<int, QgsAttributeEditorElement::LabelStyle> &QgsTabBarProxyStyle::tabStyles()
const
71QgsTabBar::QgsTabBar( QWidget *parent )
75void QgsTabBar::setTabBarStyle( QgsTabBarProxyStyle *tabStyle )
77 mTabBarStyle = tabStyle;
80QSize QgsTabBar::tabSizeHint(
int index )
const
82 if ( mTabBarStyle->tabStyles().contains( index ) )
87 const QSize s = QTabBar::tabSizeHint( index );
88 const QFontMetrics fm( font() );
89 const int w = fm.horizontalAdvance( tabText( index ) );
90 const QFont f = tabStyle.
font;
91 const QFontMetrics bfm( f );
92 const int bw = bfm.horizontalAdvance( tabText( index ) );
93 return QSize( s.width() - w + bw, s.height() );
97 return QTabBar::tabSizeHint( index );
102 return QTabBar::tabSizeHint( index );
A QProxyStyle subclass which correctly sets the base style to match the QGIS application style,...
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.