|
DAWorkbench 0.0.1
DAWorkbench API
|
数据树模型,用于展示DADataManager中的数据 更多...
#include <DADataManagerTreeModel.h>
类 | |
| 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) |
| DADataManager * | getDataManager () 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中的数据
| QStringList DA::DADataManagerTreeModel::getAllDataframeNames | ( | ) | const |
获取所有dataframe的名称
|
static |
是否是dataframe
| item |
|
static |
是否是series
| item |
|
static |
从item获取数据
无论dataframe还是dataframe下的series,通过此函数都能获取数据
| item |
|
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(); }