3#include "ViewSplitterContainer.h"
4#include <QLoggingCategory>
8static Q_LOGGING_CATEGORY(log,
"App.View.Splitter.Container")
13 , m_pParameterApp(pPara)
15 Q_ASSERT(m_pView && m_pParameterApp);
16 m_pTab =
new RabbitCommon::CTitleBar(
this);
19 m_pTab->VisibleFloatButton(
false);
20 m_pTab->VisibleMaximizeButton(
false);
21 m_pTab->VisibleMinimizeButton(
false);
22 m_pTab->installEventFilter(
this);
28 m_pTab->setWindowTitle(m_pView->windowTitle());
31 m_pTab->setContextMenuPolicy(Qt::CustomContextMenu);
32 bool check = connect(m_pTab, SIGNAL(customContextMenuRequested(QPoint)),
33 this, SLOT(slotCustomContextMenuRequested(QPoint)));
36 auto pLayout =
new QVBoxLayout(
this);
40 pLayout->setContentsMargins(0, 0, 0, 0);
41 slotTabPositionChanged();
44CViewSplitterContainer::~CViewSplitterContainer()
46 qDebug(log) << Q_FUNC_INFO;
47 if(layout() && m_pView)
48 layout()->removeWidget(m_pView);
51QWidget* CViewSplitterContainer::GetView()
56void CViewSplitterContainer::SetPrompt(
const QString &szPrompt)
58 m_pTab->setToolTip(szPrompt);
61int CViewSplitterContainer::SetVisibleTab(
bool bVisible)
63 m_pTab->setVisible(bVisible);
67bool CViewSplitterContainer::GetVisibleTab()
69 return m_pTab->isVisible();
72void CViewSplitterContainer::slotTabPositionChanged()
74 if(!m_pParameterApp || !m_pView)
77 auto pLayout = layout();
80 pLayout->removeWidget(m_pTab);
82 pLayout->removeWidget(m_pView);
85 qDebug(log) << Q_FUNC_INFO << m_pParameterApp->GetTabPosition();
86 switch(m_pParameterApp->GetTabPosition())
88 case QTabWidget::TabPosition::North:
89 case QTabWidget::TabPosition::West:
92 pLayout->addWidget(m_pTab);
93 pLayout->addWidget(m_pView);
94 m_pView->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
98 case QTabWidget::TabPosition::South:
99 case QTabWidget::TabPosition::East:
102 pLayout->addWidget(m_pView);
103 m_pView->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
104 pLayout->addWidget(m_pTab);
113void CViewSplitterContainer::closeEvent(QCloseEvent *event)
115 qDebug(log) << Q_FUNC_INFO;
116 emit sigCloseView(m_pView);
119void CViewSplitterContainer::slotCustomContextMenuRequested(
const QPoint &pos)
122 p = m_pTab->mapToGlobal(pos);
123 emit customContextMenuRequested(p);
126bool CViewSplitterContainer::eventFilter(QObject *watched, QEvent *event)
129 if(watched == m_pTab && event->type() == QEvent::MouseButtonPress)
131 emit sigFouceIn(m_pView);