Loading...
Searching...
No Matches
CentralViewStack.hpp
1#pragma once
2#include <core/view/WidgetArgTypes.hpp>
3
4#include <QWidget>
5
6#include <score_lib_base_export.h>
7
8#include <verdigris>
9
10class QHBoxLayout;
11class QStackedWidget;
12class QTabBar;
13
14namespace score
15{
32class SCORE_LIB_BASE_EXPORT CentralViewStack final : public QWidget
33{
34 W_OBJECT(CentralViewStack)
35public:
36 explicit CentralViewStack(
37 QWidget* mainView, const QString& title, QWidget* parent = nullptr);
38 ~CentralViewStack() override;
39
41 QWidget* mainView() const noexcept;
42
44 void setNavigationWidget(QWidget* w);
45 QWidget* navigationWidget() const noexcept;
46
47 void addView(QWidget* w, const QString& title, const QIcon& icon = {});
48 void removeView(QWidget* w);
49 void showView(QWidget* w);
50 void setViewTitle(QWidget* w, const QString& title);
51
52 bool hasView(QWidget* w) const noexcept;
53 QWidget* currentView() const noexcept;
55 QWidget* viewContaining(QWidget* w) const noexcept;
56
60 void releaseMainView();
61
62public:
63 void currentViewChanged(QWidget* view)
64 E_SIGNAL(SCORE_LIB_BASE_EXPORT, currentViewChanged, view)
66 void viewContextMenuRequested(QWidget* view, QPoint globalPos)
67 E_SIGNAL(SCORE_LIB_BASE_EXPORT, viewContextMenuRequested, view, globalPos)
68
69protected:
70 bool eventFilter(QObject* obj, QEvent* ev) override;
71
72private:
75 void forgetView(QWidget* w);
77 void syncWithTabs();
78 int indexOf(QWidget* w) const noexcept;
79 void on_tabCloseRequested(int index);
80
81 QHBoxLayout* m_navLayout{};
82 QWidget* m_navigationWidget{};
83 QTabBar* m_tabs{};
84 QStackedWidget* m_stack{};
85 QWidget* m_mainView{};
86 std::vector<QWidget*> m_views;
87};
88}
The central area of a document.
Definition CentralViewStack.hpp:33
Base toolkit upon which the software is built.
Definition Application.cpp:116