logplus/logPlus/PropertyWidget.h
2026-03-20 18:04:15 +08:00

242 lines
8.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file PropertyWidget.h
* @brief 统一属性服务采用了singleton模式
* @date 2025-10-10
* @author:
*/
#pragma once
#include <QDockWidget>
#include <QTableWidget>
#include "qtpropertybrowser.h"
#include "qtvariantproperty.h"
#include "qttreepropertybrowser.h"
//file
#include "variantmanager.h"
#include "variantfactory.h"
#include "ColorSchemeComboBox.h"
//
#include "forminfo.h"
#include "formhead.h"
#include "qmytablewidget.h"
#include "formtracktop.h"
#include "TransparentDraggableGujing.h"
#include "transparentdraggableimage.h"
#include "TransparentDraggableSwallCore.h"
#include "TransparentDraggableGeoLith.h"
#include "TransparentDraggableRect.h"
#include "TransparentDraggableLayer.h"
#include "TransparentDraggableJiegutext.h"
#include "transparentdraggableGuan.h"
#include "TransparentGroupResult.h"
//当前曲线类型
#define Widget_Property "Widget_Property"
#define Well_Property "Well_Property" //井
#define Track_Property "Track_Property" //道
#define Curve_Property "Curve_Property" //曲线
#define Wave_Property "Wave_Property" //波列
#define Table_Property "Table_Property" //解释结论
#define JieshiItem_Property "JieshiItem_Property" //解释结论Item
#define Head_Property "Head_Property" //图头,单元格
#define Gujing_Property "Gujing_Property" //固井结论
#define GujingItem_Property "GujingItem_Property" //固井item
#define Image_Property "Image_Property" // 岩心图片
#define ImageItem_Property "ImageItem_Property" // 岩心图片item
#define Depth_Property "Depth_Property" // 深度
#define SwallCore_Property "SwallCore_Property" //井壁取心
#define SwallCoreItem_Property "SwallCoreItem_Property" //井壁取心item
#define GeoLith_Property "GeoLith_Property" //录井剖面
#define GeoLithItem_Property "GeoLithItem_Property" //录井剖面item
#define Text_Property "Text_Property" //文字结论
#define TextItem_Property "TextItem_Property" //文字结论item
#define Layer_Property "Layer_Property" //地质分层
#define LayerItem_Property "LayerItem_Property" //地质分层item
#define Jiegutext_Property "Jiegutext_Property" //气测/FMT/射孔/文本
#define JiegutextItem_Property "JiegutextItem_Property" //气测/FMT/射孔/文本item
#define Fac_Property "Fac_Property" //沉积相
#define Tvd_Property "Tvd_Property" //斜井三图一表
#define Tubing_Property "Tubing_Property" //套管组件
#define TubingItem_Property "TubingItem_Property" //套管组件item
#pragma execution_character_set("utf-8")
/**
* @class PropertyWidget
* @brief 统一属性服务
* @date 2025-10-10
* @author:
*/
class PropertyWidget:public QDockWidget
{
Q_OBJECT
public:
PropertyWidget(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0);
~PropertyWidget();
private:
QtTreePropertyBrowser *m_pPropertyBrowser;
QtVariantPropertyManager *m_pVariantManager;
QtColorSchemeComboBoxPropertyManager * m_pColorSchemeManager;
public:
QString m_strUuid;
QString m_strTrackUuid;
QString m_strSlfName;
QString m_strWellName;
QString m_strTrackName;
QString m_strLineName;
int m_iScale=200;
double m_iY1=0;
double m_iY2=0;
QString m_strCurrentProperty;
QMap<QtProperty*, QString> m_propertyData; //属性页值
//静态属性
QMap<QString, QtProperty*> m_mapGroupItem;
//其他曲线
QStringList m_strListOtherLine;
QList<float> m_listMin;
QList<float> m_listMax;
QStringList m_strListOtherScaleType;
FormTrackTop* m_fromTop = NULL;
FormInfo * m_formInfo = NULL;
//图头
FormHead *m_formHead;
QTableWidget *m_tableWidget;
QTableWidgetItem* m_item;
int m_iRow;
int m_iCol;
//图头, 图例宽高
double m_colWidth_Img = 1;
double m_rowHeight_Img = 1;
//图头, 行高、列宽
double m_colWidth = 1;
double m_rowHeight = 1;
//道
QMyTableWidget *m_myTableWidget;
int m_iCurrentCol;
bool m_bSelfChange=false;
TransparentGroupResult* m_tdJieshi;
//
TransparentDraggableGujing* m_tdGujing;
TransparentDraggableImage* m_tdImage;
TransparentDraggableSwallCore* m_tdSwallCore;
TransparentDraggableGeoLith* m_tdGeoLith;
TransparentDraggableRect* m_tdText;
TransparentDraggableLayer* m_tdLayer;
TransparentDraggableJiegutext* m_tdJiegutext;
TransparentDraggableGuan* m_tdGuan;
public:
QWidget* GetPropertyWidget();
QtVariantProperty* _CreateVariantPropertyItem(QString strGroup, QString strPropertyCaption, QVariant vtPropertyValue, int propertyType);
void _CreateVariantPropertyItem(QString strGroup, QString strPropertyCaption, QVariant vtPropertyValue, int propertyType, double dMin, double dMax);
void _CreateEnumPropertyItem(QString strGroup, QString strPropertyCaption, QVariant vtPropertyValue, QStringList listValue);
void _CreateColorSchemePropertyItem(QString strGroup, QString strPropertyCaption, QVariant vtPropertyValue);
void InitCurrentViewInfo(bool bAll = true); //初始化属性,清空
void initWidgetProperty(QString strUuid, int iScale); //可视解释整体属性
//井
void initWellProperty(QString strUuid, QString strSlfName, QString strWellName, double iY1, double iY2);
//道
void initTrackProperty(FormTrackTop *fromTop, int iWidth, QMyTableWidget *myTableWidget, int iCurrentCol);
//曲线
void initCurveProperty(FormInfo *formInfo, QStringList strListOtherLine, QList<float> listMin, QList<float> listMax, QStringList strListOtherScaleType);
//图头
void initHeadProperty(FormHead *formHead, QTableWidget *tableWidget, QTableWidgetItem* item, int row, int col);
void initTableProperty(FormInfo *formInfo);
// 深度
void initDepthProperty(FormInfo *formInfo);
void initProperty(FormInfo *formInfo);
// 玫瑰图属性
void initRoseProperty(FormInfo *formInfo);
// 波列属性
void initWaveProperty(FormInfo *formInfo, int nType = 3);
// 解释结论Item属性
void initJieshiItemProperty(TransparentGroupResult* tdJieshi, double lower, double upper, QString strResult);
// 固井结论属性
void initGujingProperty(FormInfo *formInfo);
void initGujingItemProperty(TransparentDraggableGujing* tdGujing, double lower, double upper, QString strResult);
// 岩心照片属性
void initImageProperty(FormInfo *formInfo);
void initImageItemProperty(TransparentDraggableImage* tdImage, double lower, double upper, QString strResult, double left, double width, QColor borderColor, Qt::PenStyle borderStyle, int borderWidth);
// 井壁取心属性
void initSwallCoreProperty(FormInfo *formInfo);
void initSwallCoreItemProperty(TransparentDraggableSwallCore* tdSwallCore, double Depth, QString LithologyImage, QString OilGasImage, QString ColorImage, double Sideleft, double width, int iColor);
// 录井剖面属性
void initGeoLithProperty(FormInfo *formInfo);
void initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoLith, double lower, double upper, const QString myLith, const QString myOil, const QString myColor);
// 文字结论属性
void initTextProperty(FormInfo *formInfo);
void initTextItemProperty(TransparentDraggableRect* tdText, double lower, double upper, QString strResult);
// 地质分层属性
void initLayerProperty(FormInfo *formInfo);
void initLayerItemProperty(TransparentDraggableLayer* tdLayer, double lower, double upper, QString strResult);
//气测/FMT/射孔/文本
void initJiegutextProperty(FormInfo *formInfo);
void initJiegutextItemProperty(TransparentDraggableJiegutext* tdJiegutext, double lower, double upper);
//沉积相
void initFacProperty(FormInfo *formInfo);
// 斜井三图一表属性
void initTvdProperty(FormInfo *formInfo);
void ChangTvdProperty( QtProperty *pProperty, const QVariant &variant );
//套管组件
void initTubingProperty(FormInfo *formInfo);
void initTubingItemProperty(TransparentDraggableGuan* tdGuan, double lower, double upper, QString strResult);
void ChangFillProperty();//填充属性改变
void ChangHeadItemProperty();//图头项改变
//处理通用属性
void CommonPropertyChanged(QtProperty *pProperty, const QVariant &variant);
// 岩心照片
void changedYxzpProperty(QtProperty *pProperty, const QVariant &variant);
void changedYxzpItemProperty(QtProperty *pProperty, const QVariant &variant);
// 深度
void changedDepthProperty(QString strProName, QVariant val);
public slots:
void SlotPropertyChanged(QtProperty *property, const QVariant &variant);
void SlotPropertyChanged(QtProperty *property, const int &val, bool islinestyle);
};
extern PropertyWidget* PropertyService();