Fixed sizeHints and sizePolicies to properly support different font sizes i.e. set via QApplication::setFont

This commit is contained in:
Uwe Kindler 2019-09-13 10:25:33 +02:00
parent c5e7104413
commit b776fc24a6
3 changed files with 37 additions and 4 deletions

View File

@ -113,7 +113,7 @@ CDockAreaTabBar::CDockAreaTabBar(CDockAreaWidget* parent) :
d(new DockAreaTabBarPrivate(this)) d(new DockAreaTabBarPrivate(this))
{ {
d->DockArea = parent; d->DockArea = parent;
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
setFrameStyle(QFrame::NoFrame); setFrameStyle(QFrame::NoFrame);
setWidgetResizable(true); setWidgetResizable(true);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@ -565,6 +565,23 @@ bool CDockAreaTabBar::isTabOpen(int Index) const
return !tab(Index)->isHidden(); return !tab(Index)->isHidden();
} }
//===========================================================================
QSize CDockAreaTabBar::minimumSizeHint() const
{
QSize Size = sizeHint();
Size.setWidth(Super::minimumSizeHint().width());// this defines the minimum width of a dock area
return Size;
}
//===========================================================================
QSize CDockAreaTabBar::sizeHint() const
{
QSize Size = Super::sizeHint();
Size.setHeight(d->TabsContainerWidget->sizeHint().height());
return Size;
}
} // namespace ads } // namespace ads
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@ -156,6 +156,21 @@ public:
*/ */
bool isTabOpen(int Index) const; bool isTabOpen(int Index) const;
/**
* Overrides the minimumSizeHint() function of QScrollArea
* The minimumSizeHint() is bigger than the sizeHint () for the scroll
* area because even if the scrollbars are invisible, the required speace
* is reserved in the minimumSizeHint(). This override simply returns
* sizeHint();
*/
virtual QSize minimumSizeHint() const override;
/**
* The function provides a sizeHint that matches the height of the
* internal viewport.
*/
virtual QSize sizeHint() const override;
public slots: public slots:
/** /**
* This property sets the index of the tab bar's visible tab * This property sets the index of the tab bar's visible tab

View File

@ -130,6 +130,7 @@ DockAreaTitleBarPrivate::DockAreaTitleBarPrivate(CDockAreaTitleBar* _public) :
//============================================================================ //============================================================================
void DockAreaTitleBarPrivate::createButtons() void DockAreaTitleBarPrivate::createButtons()
{ {
QSizePolicy ButtonSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
// Tabs menu button // Tabs menu button
TabsMenuButton = new tTileBarButton(); TabsMenuButton = new tTileBarButton();
TabsMenuButton->setObjectName("tabsMenuButton"); TabsMenuButton->setObjectName("tabsMenuButton");
@ -145,7 +146,7 @@ void DockAreaTitleBarPrivate::createButtons()
#ifndef QT_NO_TOOLTIP #ifndef QT_NO_TOOLTIP
TabsMenuButton->setToolTip(QObject::tr("List all tabs")); TabsMenuButton->setToolTip(QObject::tr("List all tabs"));
#endif #endif
TabsMenuButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); TabsMenuButton->setSizePolicy(ButtonSizePolicy);
TopLayout->addWidget(TabsMenuButton, 0); TopLayout->addWidget(TabsMenuButton, 0);
_this->connect(TabsMenuButton->menu(), SIGNAL(triggered(QAction*)), _this->connect(TabsMenuButton->menu(), SIGNAL(triggered(QAction*)),
SLOT(onTabsMenuActionTriggered(QAction*))); SLOT(onTabsMenuActionTriggered(QAction*)));
@ -159,7 +160,7 @@ void DockAreaTitleBarPrivate::createButtons()
UndockButton->setToolTip(QObject::tr("Detach Group")); UndockButton->setToolTip(QObject::tr("Detach Group"));
#endif #endif
setTitleBarButtonIcon(UndockButton, QStyle::SP_TitleBarNormalButton); setTitleBarButtonIcon(UndockButton, QStyle::SP_TitleBarNormalButton);
UndockButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); UndockButton->setSizePolicy(ButtonSizePolicy);
TopLayout->addWidget(UndockButton, 0); TopLayout->addWidget(UndockButton, 0);
_this->connect(UndockButton, SIGNAL(clicked()), SLOT(onUndockButtonClicked())); _this->connect(UndockButton, SIGNAL(clicked()), SLOT(onUndockButtonClicked()));
@ -179,7 +180,7 @@ void DockAreaTitleBarPrivate::createButtons()
CloseButton->setToolTip(QObject::tr("Close Group")); CloseButton->setToolTip(QObject::tr("Close Group"));
} }
#endif #endif
CloseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); CloseButton->setSizePolicy(ButtonSizePolicy);
CloseButton->setIconSize(QSize(16, 16)); CloseButton->setIconSize(QSize(16, 16));
if (testConfigFlag(CDockManager::DockAreaHasCloseButton)) if (testConfigFlag(CDockManager::DockAreaHasCloseButton))
{ {