You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmSubWxs/nmWxDisplaySettings.h

148 lines
4.6 KiB
C

#ifndef NMWXDISPLAYSETTINGS_H
#define NMWXDISPLAYSETTINGS_H
#include "nmSubWxs_global.h" // 确保包含您的全局导出宏
#include <QDialog>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QCheckBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QPainter>
#include <QEvent> // 用于事件重写
#include <QList> // 用于QList<ConnectionLine>
#include <QPoint> // 用于QPoint
#include "nmDataAnalyzeManager.h"
// --- 前向声明 ---
// 声明CustomDisPlayTreeWidget类因为CustomDisPlayTreeWidgetItem会引用它
class CustomDisPlayTreeWidget;
/**
* @brief CustomDisPlayTreeWidgetItem
* QTreeWidgetItemQCheckBox
*/
class CustomDisPlayTreeWidgetItem : public QTreeWidgetItem
{
public:
// 构造函数:用于顶级项
explicit CustomDisPlayTreeWidgetItem(QTreeWidget *pParent = nullptr);
// 构造函数:用于子项
explicit CustomDisPlayTreeWidgetItem(QTreeWidgetItem *pParent = nullptr);
/**
* @brief
* @return QCheckBox
*/
QCheckBox* checkBox() const
{
return m_pCheckBox;
}
private:
QCheckBox *m_pCheckBox; // 指向复选框的指针
};
/**
* @brief CustomDisPlayTreeWidget
* QTreeWidget线线
*/
class CustomDisPlayTreeWidget : public QTreeWidget
{
Q_OBJECT
public:
explicit CustomDisPlayTreeWidget(QWidget *pParent = nullptr);
protected:
/**
* @brief drawBranches线线线
* @param painter
* @param rect
* @param index
*/
void drawBranches(QPainter *pPainter, const QRect &rect, const QModelIndex &index) const override;
/**
* @brief paintEvent线
* @param event
*/
void paintEvent(QPaintEvent *pEvent) override;
public slots:
/**
* @brief 线
*
*/
void updateConnectionLines();
private:
// 连接线结构体,用于存储特殊连接线的起点和终点
struct ConnectionLine {
QPoint start;
QPoint end;
};
QList<ConnectionLine> m_connectionLines; // 缓存特殊连接线的列表
};
/**
* @brief nmWxDisplaySettings
*
*/
class NM_SUB_WXS_EXPORT nmWxDisplaySettings : public QDialog
{
Q_OBJECT
public:
explicit nmWxDisplaySettings(QWidget *pParent = nullptr);
~nmWxDisplaySettings(); // 析构函数用于清理资源尽管Qt父子机制通常足够
private slots:
/**
* @brief
*
* @param state
*/
void onCheckBoxStateChanged(int state);
/**
* @brief Image Manager
*/
void onImageManagerClicked();
/**
* @brief Apply
*/
void onApplyClicked();
/**
* @brief OK
*/
void onOkClicked();
/**
* @brief Cancel
*/
void onCancelClicked();
private:
/**
* @brief
* @param pItem
* @param bEnabled (true) (false)
*/
void updateChildItemsEnableState(QTreeWidgetItem *pItem, bool bEnabled);
// UI 成员变量
CustomDisPlayTreeWidget *m_pTreeWidget; // 自定义树形控件
QPushButton *m_pImageManagerButton; // Image Manager 按钮
QPushButton *m_pApplyButton; // Apply 按钮
QPushButton *m_pOkButton; // OK 按钮
QPushButton *m_pCancelButton; // Cancel 按钮
QVBoxLayout *m_pMainLayout; // 主布局
};
#endif // NMWXDISPLAYSETTINGS_H