Changed sizeHints(), sizePolicy() and used updateGeometry() to properly size the tabBar

This commit is contained in:
Uwe Kindler 2020-02-07 11:49:45 +01:00
parent 9d7c692398
commit ae72f5e47d
4 changed files with 21 additions and 8 deletions

View File

@ -123,23 +123,24 @@ CDockAreaTabBar::CDockAreaTabBar(CDockAreaWidget* parent) :
d(new DockAreaTabBarPrivate(this))
{
d->DockArea = parent;
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
setFrameStyle(QFrame::NoFrame);
setWidgetResizable(true);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
d->TabsContainerWidget = new QWidget();
d->TabsContainerWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
d->TabsContainerWidget->setObjectName("tabsContainerWidget");
setWidget(d->TabsContainerWidget);
d->TabsLayout = new QBoxLayout(QBoxLayout::LeftToRight);
d->TabsLayout->setContentsMargins(0, 0, 0, 0);
d->TabsLayout->setSpacing(0);
d->TabsLayout->addStretch(1);
d->TabsContainerWidget->setLayout(d->TabsLayout);
setWidget(d->TabsContainerWidget);
}
//============================================================================
CDockAreaTabBar::~CDockAreaTabBar()
{
@ -350,6 +351,8 @@ void CDockAreaTabBar::insertTab(int Index, CDockWidgetTab* Tab)
{
setCurrentIndex(d->CurrentIndex + 1);
}
updateGeometry();
}
@ -412,6 +415,8 @@ void CDockAreaTabBar::removeTab(CDockWidgetTab* Tab)
{
d->updateTabs();
}
updateGeometry();
}
@ -620,7 +625,8 @@ bool CDockAreaTabBar::isTabOpen(int Index) const
QSize CDockAreaTabBar::minimumSizeHint() const
{
QSize Size = sizeHint();
Size.setWidth(Super::minimumSizeHint().width());// this defines the minimum width of a dock area
//Size.setWidth(Super::minimumSizeHint().width());// this defines the minimum width of a dock area
Size.setWidth(10);
return Size;
}
@ -628,9 +634,7 @@ QSize CDockAreaTabBar::minimumSizeHint() const
//===========================================================================
QSize CDockAreaTabBar::sizeHint() const
{
QSize Size = Super::sizeHint();
Size.setHeight(d->TabsContainerWidget->sizeHint().height());
return Size;
return d->TabsContainerWidget->sizeHint();
}

View File

@ -253,9 +253,12 @@ CDockAreaTitleBar::CDockAreaTitleBar(CDockAreaWidget* parent) :
d->TopLayout->setContentsMargins(0, 0, 0, 0);
d->TopLayout->setSpacing(0);
setLayout(d->TopLayout);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
d->createTabBar();
d->TabBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
auto horizontalSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
d->TopLayout->addSpacerItem(horizontalSpacer);
d->createButtons();
}

View File

@ -451,6 +451,7 @@ void CDockWidgetTab::setActiveTab(bool active)
d->TitleLabel->style()->unpolish(d->TitleLabel);
d->TitleLabel->style()->polish(d->TitleLabel);
update();
updateGeometry();
emit activeTabChanged();
}

View File

@ -92,3 +92,8 @@ QScrollArea#dockWidgetScrollArea
}
ads--CDockAreaTitleBar
{
background: red;
}