DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DA::DADataManagerTreeModel类 参考

数据树模型,用于展示DADataManager中的数据 更多...

#include <DADataManagerTreeModel.h>

类 DA::DADataManagerTreeModel 继承关系图:

class  PrivateData
 

Public 类型

enum  DetailDataTypeMark { DataFrameItem = 1 , SeriesInnerDataframe = 2 }
 特殊数据类型标记 更多...
 
enum  ColumnStyle { ColumnWithNameOnly = 1 , ColumnWithNameProperty }
 列类型 更多...
 
enum  CustomRole { RoleItemType = Qt::UserRole + 10 , RoleDataId = Qt::UserRole + 20 , RoleDetailDataType = Qt::UserRole + 30 }
 角色定义 更多...
 

Public 成员函数

 DADataManagerTreeModel (QObject *parent=nullptr)
 
 DADataManagerTreeModel (DADataManager *dataMgr, QObject *parent=nullptr)
 
 DADataManagerTreeModel (DADataManager *dataMgr, ColumnStyle style, QObject *parent=nullptr)
 
void setDataManager (DADataManager *dataMgr)
 
DADataManagergetDataManager () const
 
void setExpandDataframeToSeries (bool on)
 
bool isExpandDataframeToSeries () const
 
void setColumnStyle (ColumnStyle style)
 
ColumnStyle getColumnStyle () const
 
QStandardItem * findFirstDataframeItemByData (const DAData &data) const
 
QStringList getAllDataframeNames () const
 获取所有dataframe的名称
 
void clear ()
 清空
 
virtual Qt::DropActions supportedDragActions () const override
 
QStringList mimeTypes () const override
 
virtual QMimeData * mimeData (const QModelIndexList &indexs) const override
 

静态 Public 成员函数

static DAData itemToData (QStandardItem *item)
 从item获取数据
 
static bool isDataframeItem (QStandardItem *item)
 是否是dataframe
 
static bool isDataframeSeriesItem (QStandardItem *item)
 是否是series
 
static QStandardItem * createDataItem (const DAData &data)
 
static QStandardItem * createDataFrameSeriesItem (const QString &seriesName, const DAData &dataframeData)
 

Protected 成员函数

void updateDataFrameExpansion ()
 
void updateDataFrameItemExpansion (QStandardItem *dataframeItem, bool expanded)
 

详细描述

数据树模型,用于展示DADataManager中的数据

成员枚举类型说明

◆ ColumnStyle

列类型

枚举值
ColumnWithNameOnly 

只有一列名字,默认

ColumnWithNameProperty 

名称和属性两列(TODO)

◆ CustomRole

角色定义

枚举值
RoleItemType 

项目类型

RoleDataId 

数据ID

RoleDetailDataType 

详细数据类型

◆ DetailDataTypeMark

特殊数据类型标记

枚举值
DataFrameItem 

DataFrame数据项

SeriesInnerDataframe 

DataFrame内部的Series

成员函数说明

◆ getAllDataframeNames()

QStringList DA::DADataManagerTreeModel::getAllDataframeNames ( ) const

获取所有dataframe的名称

返回

◆ isDataframeItem()

bool DA::DADataManagerTreeModel::isDataframeItem ( QStandardItem *  item)
static

是否是dataframe

参数
item
返回

◆ isDataframeSeriesItem()

bool DA::DADataManagerTreeModel::isDataframeSeriesItem ( QStandardItem *  item)
static

是否是series

参数
item
返回

◆ itemToData()

DAData DA::DADataManagerTreeModel::itemToData ( QStandardItem *  item)
static

从item获取数据

无论dataframe还是dataframe下的series,通过此函数都能获取数据

参数
item
返回

◆ supportedDragActions()

Qt::DropActions DA::DADataManagerTreeModel::supportedDragActions ( ) const
overridevirtual

virtual Qt::ItemFlags flags(const QModelIndex& index) const override; virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;

Qt::ItemFlags DADataManagerTreeModel::flags(const QModelIndex& index) const { Qt::ItemFlags flags = QStandardItemModel::flags(index);

if (!d_ptr->enableEdit) { flags &= ~Qt::ItemIsEditable; } 只有第一列可编辑(用于重命名) if (index.column() != 0) { flags &= ~Qt::ItemIsEditable; flags |= Qt::ItemIsDragEnabled; flags &= ~Qt::ItemIsDropEnabled; }

DataFrame的Series项不可编辑但可拖曳 if (index.isValid()) { QStandardItem* item = itemFromIndex(index); if (item && isDataframeSeriesItem(item)) { flags &= ~Qt::ItemIsEditable; flags |= Qt::ItemIsDragEnabled; // 启用拖曳 flags &= ~Qt::ItemIsDropEnabled; } }

return flags; }

QVariant DADataManagerTreeModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) { return QVariant(); }

第一列使用默认行为 if (index.column() == 0) { return QStandardItemModel::data(index, role); }

第二列显示属性(只有显示角色) if (index.column() == 1 && role == Qt::DisplayRole) { QStandardItem* item = itemFromIndex(index.siblingAtColumn(0)); if (!item) { return QVariant(); }

DAData data = itemToData(item); if (data.isNull()) { return QVariant(); }

#if DA_ENABLE_PYTHON if (data.isDataFrame()) { DAPyDataFrame df = data.toDataFrame(); if (!df.isNone()) { auto shape = df.shape(); return QString("[%1 × %2]").arg(shape.first).arg(shape.second); } } else if (data.isSeries()) { DAPySeries series = data.toSeries(); return PY::toString(series.dtype()); } #endif }

return QVariant(); }


该类的文档由以下文件生成: