99 lines
2.4 KiB
C++
99 lines
2.4 KiB
C++
#ifndef DATAPANEL_H
|
||
#define DATAPANEL_H
|
||
|
||
#include <QDialog>
|
||
|
||
QT_BEGIN_NAMESPACE
|
||
namespace Ui {
|
||
class panelToolWidget;
|
||
}
|
||
QT_END_NAMESPACE
|
||
|
||
class CustomMenu;
|
||
class QBoxLayout;
|
||
class QScrollArea;
|
||
class PanelToolWidget;
|
||
class PanelConfigurationWidget;
|
||
class CustomBorderContainer;
|
||
|
||
class PanelToolWidget : public QWidget
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
PanelToolWidget(QWidget *parent = nullptr);
|
||
~PanelToolWidget();
|
||
|
||
friend class DataPanel;
|
||
|
||
private:
|
||
Ui::panelToolWidget* ui;
|
||
};
|
||
|
||
class DataPanel : public QDialog
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
DataPanel(QWidget *parent = nullptr);
|
||
~DataPanel();
|
||
|
||
/**
|
||
* 设置内容widget时的插入方式,widget的实际大小和panel的大小设定可能不一致,因此默认采用scrollarea来进行承载
|
||
* AutoScrollArea 根据widget的类型来自动执行,如果widget输入scrollarea,则直接使用,若不是,则创建一个scrollarea来承载
|
||
* ForceScrollArea 无论widget什么类型,都强行创建一个scrollarea进行承载
|
||
* ForceNoScrollArea 无论widget什么类型,都不使用scrollarea进行承载
|
||
*/
|
||
enum eInsertMode
|
||
{
|
||
AutoScrollArea,
|
||
ForceScrollArea,
|
||
ForceNoScrollArea
|
||
};
|
||
|
||
void setWiget(QWidget*, eInsertMode InsertMode = ForceNoScrollArea);
|
||
QWidget* takeWidget();
|
||
|
||
void setName(const QString&);
|
||
const QString& getName();
|
||
|
||
protected:
|
||
bool event(QEvent*);
|
||
/*void keyPressEvent(QKeyEvent*);
|
||
void mousePressEvent(QMouseEvent*);
|
||
void enterEvent(QEnterEvent*);
|
||
void leaveEvent(QEvent*);
|
||
void resizeEvent(QResizeEvent*);*/
|
||
|
||
public slots:
|
||
void onToolBtnClicked_setting();
|
||
void onToolBtnClicked_fullScreen();
|
||
void onToolBtnClicked_menu();
|
||
|
||
void onAction_remove();
|
||
void onAction_moveToFront();
|
||
void onAction_moveToBack();
|
||
|
||
void onAboutToHide_toolMenu();
|
||
|
||
signals:
|
||
void sgl_remove(const QString&);
|
||
|
||
private:
|
||
void setupScrollArea();
|
||
void autoSetGeometry(); //在缩放和移动时以其它panel和parent的border为依据自动调整
|
||
|
||
bool m_bMouseEnter;
|
||
QString m_strName;
|
||
QRect m_curGeometry;
|
||
CustomMenu* m_pToolMenu;
|
||
QWidget* m_pContentWidget;
|
||
QBoxLayout* m_pLayout;
|
||
QScrollArea* m_pScrollArea;
|
||
PanelToolWidget* m_pToolWidget;
|
||
PanelConfigurationWidget* m_pConfigurationWidget;
|
||
CustomBorderContainer* m_pCustomBorderContainer;
|
||
};
|
||
|
||
#endif
|