2024-10-10 16:59:51 +08:00
|
|
|
|
#ifndef DATAPANEL_H
|
|
|
|
|
|
#define DATAPANEL_H
|
|
|
|
|
|
|
|
|
|
|
|
#include <QDialog>
|
2025-01-04 18:18:19 +08:00
|
|
|
|
#include "global.h"
|
|
|
|
|
|
#include "dataPanel/dpGlobals.h"
|
2024-10-10 16:59:51 +08:00
|
|
|
|
|
|
|
|
|
|
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:
|
2025-01-04 18:18:19 +08:00
|
|
|
|
DataPanel(QWidget *parent = nullptr, DataPanelType type = lineChart);
|
2024-10-10 16:59:51 +08:00
|
|
|
|
~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();
|
|
|
|
|
|
|
2024-11-21 17:29:37 +08:00
|
|
|
|
void setInitialSize(const QSize&);
|
|
|
|
|
|
void setDisplayAreaSize(const QSize&);
|
|
|
|
|
|
void resizeByRatio(double, double); //通过缩放比例做resize,在所属dasboard的resizeEvent中调用
|
|
|
|
|
|
void resizeByNewSize(const QSize&); //通过新的尺寸(所在区域)做resize,当所属dashboard被激活(显示)时调用
|
2025-01-04 18:18:19 +08:00
|
|
|
|
void setDateTime(const QDateTime&);
|
|
|
|
|
|
void setTimeRange(TimeUnit);
|
2024-11-21 17:29:37 +08:00
|
|
|
|
|
2024-10-10 16:59:51 +08:00
|
|
|
|
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();
|
|
|
|
|
|
|
2025-01-14 18:39:52 +08:00
|
|
|
|
void onSignal_configure();
|
|
|
|
|
|
|
2024-10-10 16:59:51 +08:00
|
|
|
|
signals:
|
|
|
|
|
|
void sgl_remove(const QString&);
|
2025-01-14 18:39:52 +08:00
|
|
|
|
void sgl_openCofigurationDialog(DataPanel*);
|
2024-10-10 16:59:51 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
void setupScrollArea();
|
|
|
|
|
|
void autoSetGeometry(); //在缩放和移动时以其它panel和parent的border为依据自动调整
|
2025-01-04 18:18:19 +08:00
|
|
|
|
void createDataWidget(DataPanelType);
|
2024-10-10 16:59:51 +08:00
|
|
|
|
|
|
|
|
|
|
bool m_bMouseEnter;
|
2024-12-24 20:17:42 +08:00
|
|
|
|
bool m_bConfigurationComplete;
|
2024-10-10 16:59:51 +08:00
|
|
|
|
QString m_strName;
|
2024-11-21 17:29:37 +08:00
|
|
|
|
QSize m_displayAreaSize;
|
2024-10-10 16:59:51 +08:00
|
|
|
|
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
|