PowerMaster/include/dataPanel.h

125 lines
3.4 KiB
C
Raw Normal View History

2024-10-10 16:59:51 +08:00
#ifndef DATAPANEL_H
#define DATAPANEL_H
#include <QDialog>
#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:
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
};
2025-08-25 15:10:02 +08:00
void setWidget(QWidget*, eInsertMode InsertMode = ForceNoScrollArea);
2024-10-10 16:59:51 +08:00
QWidget* takeWidget();
void setName(const QString&);
const QString& getName();
DataPanelType getType();
void setInitialSize(const QSize&);
void setDisplayAreaSize(const QSize&);
void resizeByRatio(double, double); //通过缩放比例做resize在所属dasboard的resizeEvent中调用
void resizeByNewSize(const QSize&); //通过新的尺寸(所在区域)做resize当所属dashboard被激活(显示)时调用
void setDateTime(const QDateTime&);
void setTimeRange(TimeUnit);
void configurationComplete();
2024-10-10 16:59:51 +08:00
protected:
bool event(QEvent*);
2025-06-13 11:21:16 +08:00
/*void paintEvent(QPaintEvent*);
void keyPressEvent(QKeyEvent*);
2024-10-10 16:59:51 +08:00
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();
void onSignal_dataUpdated(const QString& dataKey, const QVariant& data);
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-07-14 15:02:29 +08:00
void createDataWidget();
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;
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;
DataPanelType m_type;
2024-10-10 16:59:51 +08:00
PanelConfigurationWidget* m_pConfigurationWidget;
CustomBorderContainer* m_pCustomBorderContainer;
friend class dpConfigurationDialog;
configurationResults m_cofigurationResults;
2024-10-10 16:59:51 +08:00
};
#endif