|
|
#ifndef NMWXGRIDVTKCONTAINERWIDGET_H
|
|
|
#define NMWXGRIDVTKCONTAINERWIDGET_H
|
|
|
|
|
|
#include <QWidget>
|
|
|
#include "nmSubWxs_global.h" // 假设此头文件定义了 NM_SUB_WXS_EXPORT
|
|
|
#include <QEvent> // For eventFilter
|
|
|
#include <QMouseEvent> // For eventFilter
|
|
|
|
|
|
class QVBoxLayout; // QVBoxLayout 的前向声明
|
|
|
class QVTKWidget; // QVTKWidget 的前向声明
|
|
|
class QImage;
|
|
|
|
|
|
class vtkImageData;
|
|
|
class vtkUnsignedCharArray;
|
|
|
|
|
|
class NM_SUB_WXS_EXPORT nmWxGridVTKContainerWidget : public QWidget
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
// 构造函数:初始化部件并设置父对象。
|
|
|
nmWxGridVTKContainerWidget(QWidget *parent = nullptr);
|
|
|
|
|
|
// 将 VTK 图像数据(vtkImageData)转换为 Qt 的 QImage 对象
|
|
|
QImage createQImage(vtkImageData* imageData);
|
|
|
// 处理单通道图像,灰度图像
|
|
|
QImage createQImage1(int nWidth, int nHeight, vtkUnsignedCharArray* pScalars);
|
|
|
// 处理双通道图像,灰度图像带有 Alpha 透明度
|
|
|
QImage createQImage2(int nWidth, int nHeight, vtkUnsignedCharArray* pScalars);
|
|
|
// 处理三通道图像,RGB 彩色图像
|
|
|
QImage createQImage3(int nWidth, int nHeight, vtkUnsignedCharArray* pScalars);
|
|
|
// 处理四通道图像,RGBA 彩色图像
|
|
|
QImage createQImage4(int nWidth, int nHeight, vtkUnsignedCharArray* pScalars);
|
|
|
|
|
|
protected:
|
|
|
// **新增:事件过滤器,用于捕获来自 m_pVtkWidget 的鼠标事件**
|
|
|
bool eventFilter(QObject *pObj, QEvent *event) override;
|
|
|
|
|
|
signals:
|
|
|
|
|
|
private:
|
|
|
// 私有辅助方法,用于初始化 UI 和 VTK 组件。
|
|
|
void initLayout(); // 初始化主布局。
|
|
|
void initVTKWidget(); // 初始化 QVTKWidget 及其 VTK 渲染管线。
|
|
|
// 将VTK渲染内容转换为QImage
|
|
|
QImage getVTKRenderWindowAsImage();
|
|
|
|
|
|
private slots:
|
|
|
// 图片和打印操作的槽函数,现在属于此类。
|
|
|
void saveWidgetAsImage(); // 将 m_pVtkWidget 的内容保存为图片文件。
|
|
|
void copyWidgetImage(); // 将 m_pVtkWidget 的内容复制到剪贴板。
|
|
|
void printWidget(); // 打印 m_pVtkWidget 的内容。
|
|
|
void printPreviewWidget(); // 显示 m_pVtkWidget 内容的打印预览。
|
|
|
// 辅助槽函数,负责将部件内容渲染到 QPrinter 以进行打印/预览。
|
|
|
void renderWidgetForPrint(QPrinter *printer);
|
|
|
|
|
|
private:
|
|
|
QVBoxLayout* m_pMainLayout; // 此容器部件的主垂直布局。
|
|
|
|
|
|
// 指向 QVTKWidget 实例的指针,用于显示 VTK 内容。
|
|
|
QVTKWidget* m_pVtkWidget;
|
|
|
};
|
|
|
|
|
|
#endif // NMWXGRIDVTKCONTAINERWIDGET_H
|