From d0f79c073de2d205887f5a14dcb9eae0e55b12b3 Mon Sep 17 00:00:00 2001 From: Wladimir Leuschner Date: Fri, 8 Sep 2023 18:03:42 +0200 Subject: [PATCH] Introduce TabWidget to Windows11 style Introduce a TabWidget with rounded corners. Change-Id: Ie6eb7a3e05b2240a0ecce2604ca87cc3db549dd1 Reviewed-by: Oliver Wolff Reviewed-by: Qt CI Bot --- .../styles/modernwindows/qwindows11style.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp index 794b7c38f0..b4d24d70fe 100644 --- a/src/plugins/styles/modernwindows/qwindows11style.cpp +++ b/src/plugins/styles/modernwindows/qwindows11style.cpp @@ -507,6 +507,12 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption } switch (element) { + case PE_FrameTabWidget: + if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast(option)) { + painter->setPen(frameColorLight); + painter->setBrush(frame->palette.base()); + painter->drawRoundedRect(frame->rect.marginsRemoved(QMargins(1,1,1,1)), secondLevelRoundingRadius, secondLevelRoundingRadius); + } case PE_FrameGroupBox: if (const QStyleOptionFrame *frame = qstyleoption_cast(option)) { painter->setPen(frameColorStrong); @@ -714,6 +720,26 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op painter->save(); painter->setRenderHint(QPainter::Antialiasing); switch (element) { + case QStyle::CE_TabBarTabShape: + if (const QStyleOptionTab *tab = qstyleoption_cast(option)) { + painter->setPen(frameColorLight); + painter->setBrush(tab->palette.base()); + if (tab->state & State_MouseOver){ + painter->setBrush(subtleHighlightColor); + painter->drawRoundedRect(tab->rect.marginsRemoved(QMargins(2,2,0,0)),2,2); + } + else if (tab->state & State_Selected) { + painter->setPen(frameColorLight); + painter->setBrush(tab->palette.base()); + painter->drawRoundedRect(tab->rect.marginsRemoved(QMargins(2,2,0,0)),2,2); + } + else { + painter->setPen(frameColorLight); + painter->setBrush(tab->palette.window()); + painter->drawRoundedRect(tab->rect.marginsRemoved(QMargins(2,2,0,0)),2,2); + } + } + break; case CE_ToolButtonLabel: if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast(option)) {