54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
#pragma once
|
|
#include <QDockWidget>
|
|
#include <QToolButton>
|
|
#include <QStyle>
|
|
#include <QHBoxLayout>
|
|
#include <QMainWindow>
|
|
#include <QMap>
|
|
#include <QSize>
|
|
#include <QLabel>
|
|
|
|
class CustomDockWidgetBase :
|
|
public QDockWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit CustomDockWidgetBase(QString title, QMainWindow* parent = nullptr);
|
|
explicit CustomDockWidgetBase(QMainWindow* parent = nullptr);
|
|
void setTile(QString title);
|
|
void hideMaxButton();
|
|
|
|
public slots:
|
|
virtual void toggleMaximize();
|
|
|
|
signals:
|
|
void maximizeStateChanged(bool isMaximized);
|
|
|
|
protected:
|
|
QMainWindow* m_mainWindow = nullptr;
|
|
QToolButton* m_maxButton = nullptr;
|
|
bool m_isMaximized = false;
|
|
|
|
QList<QDockWidget*> m_hiddenDocks;
|
|
QByteArray m_savedState;
|
|
QMap<QDockWidget*, QSize> m_originalSizes;
|
|
|
|
QLabel* title_label;
|
|
void initialize();
|
|
};
|
|
|
|
class CustomDockWidgetHideAbove :
|
|
public CustomDockWidgetBase
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit CustomDockWidgetHideAbove(QString title, QMainWindow* parent = nullptr);
|
|
explicit CustomDockWidgetHideAbove(QMainWindow* parent = nullptr);
|
|
|
|
private slots:
|
|
void toggleMaximize();
|
|
|
|
private:
|
|
|
|
};
|