int TabBar::comboTabBarPixelMetric(ComboTabBar::SizeType sizeType) const { if (!isVisible()) return -1; switch (sizeType) { case ComboTabBar::PinnedTabWidth: return iconButtonSize().width() + style()->pixelMetric(QStyle::PM_TabBarTabHSpace, 0, this); case ComboTabBar::ActiveTabMinimumWidth: case ComboTabBar::NormalTabMinimumWidth: case ComboTabBar::OverflowedTabWidth: return 100; case ComboTabBar::NormalTabMaximumWidth: return 250; case ComboTabBar::ExtraReservedWidth: return m_tabWidget->extraReservedWidth(); default: break; } return -1; }
void TabBar::tabInserted(int index) { Q_UNUSED(index) // Initialize pinned tab metrics if (tabMetrics()->pinnedWidth() == -1) { QTimer::singleShot(0, this, [this]() { if (tabMetrics()->pinnedWidth() != -1) { return; } QWidget *w = tabButton(0, iconButtonPosition()); if (w && w->parentWidget()) { const QRect wg = w->parentWidget()->geometry(); const QRect wr = QStyle::visualRect(layoutDirection(), wg, w->geometry()); tabMetrics()->setPinnedWidth(iconButtonSize().width() + wr.x() * 2); setUpLayout(); } }); } setVisible(!(count() <= 1 && m_hideTabBarWithOneTab)); } void TabBar::tabRemoved(int index) { Q_UNUSED(index) showCloseButton(currentIndex()); setVisible(!(count() <= 1 && m_hideTabBarWithOneTab));