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/mGui/mGuiAnal/iLayerTableModel.h

95 lines
2.7 KiB
C

#pragma once
////////////////////////////////////////////////////////////////////
// <20>ر<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD>AI<41><49><EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD>ĶԻ<C4B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
// <20>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жԱ<D0B6><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>AIֱ<49>ӱ<EFBFBD><D3B1><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸĶ<C4B8><C4B6><EFBFBD>
// Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3>ݲ<EFBFBD><DDB2><EFBFBD>iFramework<72><6B><EFBFBD>ܽ<EFBFBD><DCBD>м<EFBFBD><D0BC>ɡ<EFBFBD>
// <20><EFBFBD><E6BCB0><EFBFBD><EFBFBD>ļ<EFBFBD>:iLayerColorBand.h/cpp
// iLayerTableModel.h/cpp
// iLayerTableView.h/cpp
// iLayerWx.h/cpp
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>2026-01-08
// <20><><EFBFBD>ߣ<EFBFBD>AI<41><49>ģ<EFBFBD><C4A3>
// <20><><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>wangzg
// <20>󸽣<EFBFBD><F3B8BDA3><EFBFBD><EFBFBD><EFBFBD><E5BDBB><EFBFBD><EFBFBD> iLayerWx.h
////////////////////////////////////////////////////////////////////
#include <QColor>
#include <QAbstractTableModel>
#include "mGuiAnal_global.h"
struct LayerData
{
QString layerName;
double thickness; // unit: meter
double ratio; // percentage
QString remark;
QColor color;
LayerData() : thickness(10.0), ratio(0.0)
{}
LayerData(const QString& name, double thick, const QColor& col)
: layerName(name), thickness(thick), ratio(0.0), color(col)
{}
};
class M_GUI_ANAL_EXPORT iLayerTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
iLayerTableModel(QObject *parent = 0);
~iLayerTableModel();
// Basic override functions
int rowCount(const QModelIndex &parent = QModelIndex()) const ;
int columnCount(const QModelIndex &parent = QModelIndex()) const ;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const ;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
Qt::ItemFlags flags(const QModelIndex &index) const;
// Custom functions
void addLayer(const QString& defaultName = "", double thickness = 10.0);
void insertLayer(int row, const QString& defaultName = "", double thickness = 10.0);
void removeLayer(int row);
void setRowCount(int count);
// Update ratios for all rows
void updateRatios();
// Get total thickness
double getTotalThickness() const;
// Get/Set layer data
QList<LayerData> getLayerData() const;
void setLayerData(const QList<LayerData>& data);
// Get/Set color for specific layer
QColor getLayerColor(int row) const;
void setLayerColor(int row, const QColor& color);
// Get default color
QColor getDefaultColor(int index) const;
static QColor defaultColorOf(int index);
// Modify layer thickness and update ratio
bool setOneRowThickness(int row, double thickness, double newRatio);
signals:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
void layerDataChanged();
private:
void initDefaultLayers();
private:
QList<LayerData> m_layers;
};