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/nmSubWnd/nmSubWndGrid.h

69 lines
2.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "iSubWndBaseFit.h"
#include "nmSubWnd_global.h"
#include <QPointer>
class nmWxGridVTKContainerWidget;
class nmDataAnalyzeManager;
class nmCalculationPebiGridTask;
class QTimer;
class NM_SUB_WND_EXPORT nmSubWndGrid : public iSubWndBaseFit {
Q_OBJECT
public:
/**
* @brief 创建绑定到指定数据管理器的网格成果窗口。
* @param bGeneratePebiGrid 为 true 时根据当前 Map 输入重新划分网格。
* @param pDataManager 窗口所属数据管理器,不转移所有权。
*/
explicit nmSubWndGrid(QWidget *parent = 0, QString sExt = "",
double pebiGridControl = 150.0,
bool bGeneratePebiGrid = true,
nmDataAnalyzeManager* pDataManager = nullptr);
~nmSubWndGrid();
// 配置窗体
virtual void configWnd(QString sPrevInfo);
// 初始化UI
virtual void initUI();
virtual QWidget* initUiMainWx();
// 成果保存加载
virtual bool loadRsts();
virtual bool saveRsts();
virtual bool onConfirmClosing();
public slots:
/** @brief 合并连续数据变化请求,并启动本窗口的防抖计时。 */
void updateGrid();
/** @brief 防抖结束后启动或排队一次后台 PEBI 网格任务。 */
void onDebounceTimeout();
/** @brief 网格任务完成后刷新本窗口 VTK 视图。 */
void onPebiGridGenerated(bool success);
/** @brief 回收完成的任务;运行期间有新请求时补做最后一次重建。 */
void onPebiGridTaskFinished();
public:
// 执行命令通常来自Ribbon
virtual bool runCmdBy(QString sName, QString sID);
// 生成PEBI网格
bool generatePebiGrid();
private:
QVBoxLayout* m_mainLayout; ///< 网格窗口主布局。
nmWxGridVTKContainerWidget* m_vtkWidget; ///< 显示所属分析网格的 VTK 控件。
QTimer* m_pDebounceTimer; ///< 本窗口独立防抖定时器,避免跨窗口刷新。
QPointer<nmDataAnalyzeManager> m_pDataManager; ///< 窗口所属数据管理器,销毁后自动置空。
QPointer<nmCalculationPebiGridTask> m_pGridTask; ///< 当前后台网格任务,完成后自动回收。
bool m_bGridUpdatePending; ///< 任务运行期间是否又收到网格更新请求。
// PEBI GridControl控制参数对应HX_NWTM_GRID_INPUT::GridControl
double m_dPebiGridControl;
bool m_bGeneratePebiGrid; ///< 是否根据当前 Map 几何重新生成 PEBI 网格。
};