Qt6: fixed tab sizing. issue #40168

This commit is contained in:
Željan Rikalo 2023-03-20 16:14:12 +01:00
parent ec1e775ac1
commit 454cf2d90c
2 changed files with 20 additions and 20 deletions

View File

@ -176,6 +176,7 @@ begin
QtTabWidget := TQtTabWidget.Create(AWinControl, AParams);
QtTabWidget.setTabPosition(QTabWidgetTabPositionMap[TCustomTabControl(AWinControl).TabPosition]);
QtTabWidget.setTabsClosable(nboShowCloseButtons in TCustomTabControl(AWinControl).Options);
QtTabWidget.setTabSize(TCustomTabControl(AWinControl).TabHeight, TCustomTabControl(AWinControl).TabWidth);
{$IFDEF DARWIN}
QTabWidget_setElideMode(QTabWidgetH(QtTabWidget.Widget), QtElideNone);
{$ENDIF}
@ -499,29 +500,10 @@ end;
class procedure TQtWSCustomTabControl.SetTabSize(
const ATabControl: TCustomTabControl; const ATabWidth, ATabHeight: integer);
var
ASize, ANewSize: TSize;
WS: WideString;
begin
if not WSCheckHandleAllocated(ATabControl, 'SetTabSize') then
Exit;
ASize.cx := -1;
ASize.cy := -1;
ANewSize := ASize;
if ATabWidth > 0 then
ANewSize.cx := ATabWidth;
if ATabHeight > 0 then
ANewSize.cy := ATabHeight;
if (ATabWidth = 0) and (ATabHeight = 0) then
WS := ''
else
begin
if ATabControl.TabPosition in [tpLeft, tpRight] then
WS := {%H-}Format('QTabBar::tab { height: %dpx; width: %dpx; }',[ANewSize.cx, ANewSize.cy])
else
WS := {%H-}Format('QTabBar::tab { height: %dpx; width: %dpx; }',[ANewSize.cy, ANewSize.cx]);
end;
QWidget_setStyleSheet(TQtTabWidget(ATabControl.Handle).Widget, @WS);
TQtTabWidget(ATabControl.Handle).setTabSize(ATabHeight, ATabWidth);
end;
class procedure TQtWSCustomTabControl.ShowTabs(const ATabControl: TCustomTabControl;

View File

@ -1014,6 +1014,7 @@ type
procedure setTabPosition(ATabPosition: QTabWidgetTabPosition);
procedure setTabIcon(index: Integer; icon: QIconH);
procedure setTabText(index: Integer; p2: WideString);
procedure setTabSize(const AHeight, AWidth: integer);
procedure setTabsClosable(AValue: Boolean);
function tabAt(APoint: TPoint): Integer;
@ -10937,6 +10938,23 @@ begin
QTabWidget_setTabText(QTabWidgetH(Widget), index, @p2);
end;
procedure TQtTabWidget.setTabSize(const AHeight, AWidth: integer);
var
ANewSize: TSize;
WS: WideString;
begin
ANewSize := Default(TSize);
if AWidth > 0 then
ANewSize.cx := AWidth;
if AHeight > 0 then
ANewSize.cy := AHeight;
if (AWidth <= 0) and (AHeight <= 0) then
WS := ''
else
WS := {%H-}Format('QTabBar::tab { height: %dpx; width: %dpx; }',[ANewSize.cy, ANewSize.cx]);
QWidget_setStyleSheet(Widget, @WS);
end;
procedure TQtTabWidget.setTabsClosable(AValue: Boolean);
begin
QTabWidget_setTabsClosable(QTabWidgetH(Widget), AValue);