diff --git a/hidabletabwidget.cpp b/hidabletabwidget.cpp new file mode 100644 --- /dev/null +++ b/hidabletabwidget.cpp @@ -0,0 +1,37 @@ +#include "hidabletabwidget.h" +#include +#include + +HidableTabWidget::HidableTabWidget(QWidget *parent) : + QTabWidget(parent), + hideAction("▾", this) +{ + hideAction.setCheckable(true); + hideAction.setToolTip("Hide Panels"); + QToolButton* hideButton = new QToolButton(); + hideButton->setDefaultAction(&hideAction); + hideButton->setAutoRaise(true); + this->setCornerWidget(hideButton); + + connect(&hideAction, SIGNAL(toggled(bool)), this, SLOT(onHideAction(bool))); + connect(this, SIGNAL(tabBarClicked(int)), this, SLOT(onTabBarClicked())); +} + +void HidableTabWidget::onHideAction(bool checked) +{ + if (checked) + { + this->setMaximumHeight(this->tabBar()->height()); + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); + } + else + { + this->setMaximumHeight(100000); // just a very big number + this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + } +} + +void HidableTabWidget::onTabBarClicked() +{ + hideAction.setChecked(false); +}