Files
HPPA/HPPA/TabManager.cpp
tangchao0503 30306e9396 初步完成美化:
1、左下角3d模型预览看板;
2、右下角控制看板
2026-01-16 22:03:30 +08:00

63 lines
1.4 KiB
C++

#include "TabManager.h"
TabManager::TabManager(QTabWidget* tabWidget, QObject* parent)
: QObject(parent),
m_tabWidget(tabWidget)
{
Q_ASSERT(m_tabWidget);
}
void TabManager::hideTab(QWidget* page)
{
if (!page || !m_tabWidget)
return;
int index = m_tabWidget->indexOf(page);
if (index == -1)
return;
if (m_hiddenTabs.contains(page))
return;
TabInfo info;
info.index = index;
info.text = m_tabWidget->tabText(index);
info.icon = m_tabWidget->tabIcon(index);
info.toolTip = m_tabWidget->tabToolTip(index);
m_hiddenTabs.insert(page, info);
// 如果隐藏的是当前页,先切换,避免空白
if (m_tabWidget->currentIndex() == index)
{
int next = (index > 0) ? index - 1 : 0;
m_tabWidget->setCurrentIndex(next);
}
m_tabWidget->removeTab(index);
emit tabHidden(page);
}
void TabManager::showTab(QWidget* page)
{
if (!page || !m_tabWidget)
return;
if (!m_hiddenTabs.contains(page))
return;
TabInfo info = m_hiddenTabs.take(page);
//int insertIndex = qMin(info.index, m_tabWidget->count());
int insertIndex = m_tabWidget->count();
m_tabWidget->insertTab(insertIndex, page, info.icon, info.text);
m_tabWidget->setTabToolTip(insertIndex, info.toolTip);
emit tabShown(page);
}
bool TabManager::isHidden(QWidget* page) const
{
return m_hiddenTabs.contains(page);
}