|
|
#ifndef NMWXRESULTPARAMETERS_H
|
|
|
#define NMWXRESULTPARAMETERS_H
|
|
|
#include "nmSubWxs_global.h"
|
|
|
#include <QWidget>
|
|
|
#include <QTreeWidget>
|
|
|
#include <QTreeWidgetItem>
|
|
|
#include "nmDataAttribute.h"
|
|
|
#include <QVBoxLayout>
|
|
|
#include <QMouseEvent>
|
|
|
|
|
|
// 扩展QTreeWidget类,实现点击某一行时,触发第二列的编辑框
|
|
|
class CustomTreeWidget : public QTreeWidget
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
explicit CustomTreeWidget(QWidget *parent = 0);
|
|
|
protected:
|
|
|
void mousePressEvent(QMouseEvent *event) override;
|
|
|
void mouseMoveEvent(QMouseEvent *event) override;
|
|
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
|
|
void paintEvent(QPaintEvent *event) override;
|
|
|
private:
|
|
|
bool m_isResizing;
|
|
|
int m_resizeColumn;
|
|
|
int m_resizeStartX;
|
|
|
int m_resizeStartWidth;
|
|
|
};
|
|
|
|
|
|
#include <QStyledItemDelegate>
|
|
|
#include <QPixmap>
|
|
|
// 自定义委托类,处理QTreeWidget类的Item交互
|
|
|
class CustomTreeDelegate : public QStyledItemDelegate
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
explicit CustomTreeDelegate(QObject *parent = nullptr);
|
|
|
void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
|
|
const QModelIndex &index) const override;
|
|
|
bool editorEvent(QEvent *event, QAbstractItemModel *model,
|
|
|
const QStyleOptionViewItem &option,
|
|
|
const QModelIndex &index) override;
|
|
|
// 绘制背景
|
|
|
void drawBackground(QPainter* painter, QStyleOptionViewItem& opt, const QModelIndex& index) const;
|
|
|
// 绘制第一列(带图标)
|
|
|
void drawFirstColumn(QPainter* painter, QStyleOptionViewItem& opt, const QModelIndex& index, const QFont& font) const;
|
|
|
// 绘制第二列(数值+单位)
|
|
|
void drawSecondColumn(QPainter* painter, const QStyleOptionViewItem& opt, const QModelIndex& index, const QFont& baseFont, bool isSelected) const;
|
|
|
// 绘制网格线
|
|
|
void drawGridLines(QPainter* painter, const QStyleOptionViewItem& opt, const QModelIndex& index) const;
|
|
|
|
|
|
private:
|
|
|
// 判断当前节点是不是最后一个节点
|
|
|
bool isLastSibling(const QModelIndex& index) const;
|
|
|
// 格式化显示值的辅助方法
|
|
|
QString formatDisplayValue(const QVariant& value) const;
|
|
|
|
|
|
QSize m_iconSize; // 图标大小
|
|
|
QPixmap m_expandIcon; // 左侧展开图标
|
|
|
QPixmap m_collapseIcon; // 左侧折叠图标
|
|
|
};
|
|
|
|
|
|
class nmDataReservoir;
|
|
|
class nmDataWellBase;
|
|
|
class nmDataMixedResults;
|
|
|
class nmDataPvtParaForPebi;
|
|
|
|
|
|
// 结果参数Widget
|
|
|
class NM_SUB_WXS_EXPORT nmWxResultParameters : public QWidget
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
explicit nmWxResultParameters(QWidget *parent = nullptr);
|
|
|
~nmWxResultParameters();
|
|
|
void initUI();
|
|
|
void initLayout();
|
|
|
void initComponents();
|
|
|
// 加载结果数据
|
|
|
void loadResultDatas();
|
|
|
// 添加混合结果参数到树
|
|
|
void appendMixedResultsToTree(nmDataMixedResults* mixedResults,nmDataWellBase* well,nmDataReservoir* reservoir,nmDataPvtParaForPebi* pvtPara);
|
|
|
// 添加井的结果参数到树控件(当前是默认井,即第一口井)
|
|
|
void appendWellToTree(nmDataWellBase* well);
|
|
|
// 添加储层结果参数到树控件
|
|
|
void appendReservoirToTree(nmDataReservoir* reservoir);
|
|
|
// 辅助函数:添加属性到树
|
|
|
void addAttributeToTree(QTreeWidgetItem* parent,const nmDataAttribute& attr);
|
|
|
|
|
|
private:
|
|
|
// 保留原有方法(可选,如果需要兼容性)
|
|
|
QString formatAttributeValue(const QVariant& value, const QString& unit);
|
|
|
|
|
|
signals:
|
|
|
private:
|
|
|
// 布局
|
|
|
QVBoxLayout* m_pLayout;
|
|
|
CustomTreeWidget* m_pTreeWidget;
|
|
|
};
|
|
|
#endif // NMWXRESULTPARAMETERS_H
|