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

数据管理接口 更多...

#include <DADataManagerInterface.h>

类 DA::DADataManagerInterface 继承关系图:
DA::DABaseInterface DA::DAAppDataManager

class  PrivateData
 

信号

void dataAdded (const DA::DAData &d)
 有数据添加发射的信号
 
void dataBeginRemove (const DA::DAData &d, int dataIndex)
 数据准备删除
 
void dataRemoved (const DA::DAData &d, int dataOldIndex)
 数据删除发射的信号
 
void dataChanged (const DA::DAData &d, DA::DADataManager::ChangeType t)
 数据信息改变
 

Public 成员函数

 DADataManagerInterface (DACoreInterface *c, QObject *par=nullptr)
 
DADataManagerdataManager () const
 获取数据管理的指针
 
virtual void addData (DAData &d)
 添加数据
 
virtual void addData_ (DAData &d)
 带redo/undo的添加数据
 
virtual void removeData (DAData &d)
 移除数据
 
virtual void removeData_ (DAData &d)
 带redo/undo的移除数据
 
virtual int getDataCount () const
 获取变量管理器管理的数据数量
 
virtual QList< DADatagetSelectDatas () const =0
 获取当前选中的数据,此函数要基于界面数据管理器选择的数据返回
 
virtual DAData getOperateData () const =0
 获取当前正在操作的数据,当前正在操作的数据是指当前正在打开的表格所对应的数据
 
virtual QList< int > getOperateDataSeries () const =0
 获取当前正在操作窗口操作的列名
 
int getDataIndex (const DAData &d) const
 参数在变量管理器的索引
 
DAData getData (int index) const
 根据索引获取对应的值
 
DAData getDataById (DAData::IdType id) const
 根据id获取数据
 
DAData findData (const QString &name, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
 精确查找数据
 
QList< DADatafindDatas (const QString &pattern, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
 使用通配符或普通字符串查找匹配的数据
 
QList< DADatafindDatasReg (const QRegularExpression &regex) const
 使用正则表达式查找匹配的数据
 
QList< DADatagetAllDatas () const
 获取所有数据
 
QUndoStack * getUndoStack () const
 获取undo stack
 
- Public 成员函数 继承自 DA::DABaseInterface
 DABaseInterface (DACoreInterface *c, QObject *par=nullptr)
 
DACoreInterfacecore () const
 

详细描述

数据管理接口

成员函数说明

◆ addData()

void DA::DADataManagerInterface::addData ( DAData d)
virtual

添加数据

注解
此函数会发生信号
参见
dataAdded
参数
d

◆ addData_()

void DA::DADataManagerInterface::addData_ ( DAData d)
virtual

带redo/undo的添加数据

注解
此函数会发生信号
参见
dataBeginAdd 和
dataEndAdded
参数
d

◆ dataAdded

void DA::DADataManagerInterface::dataAdded ( const DA::DAData d)
signal

有数据添加发射的信号

参数
d

◆ dataBeginRemove

void DA::DADataManagerInterface::dataBeginRemove ( const DA::DAData d,
int  dataIndex 
)
signal

数据准备删除

参数
d
dataIndex

◆ dataChanged

void DA::DADataManagerInterface::dataChanged ( const DA::DAData d,
DA::DADataManager::ChangeType  t 
)
signal

数据信息改变

参数
d数据
oldname

◆ dataManager()

DADataManager * DA::DADataManagerInterface::dataManager ( ) const

获取数据管理的指针

返回

◆ dataRemoved

void DA::DADataManagerInterface::dataRemoved ( const DA::DAData d,
int  dataOldIndex 
)
signal

数据删除发射的信号

参数
d

◆ findData()

DAData DA::DADataManagerInterface::findData ( const QString &  name,
Qt::CaseSensitivity  cs = Qt::CaseSensitive 
) const

精确查找数据

参数
name
返回

◆ findDatas()

QList< DAData > DA::DADataManagerInterface::findDatas ( const QString &  pattern,
Qt::CaseSensitivity  cs = Qt::CaseInsensitive 
) const

使用通配符或普通字符串查找匹配的数据

参数
pattern查找模式,可以是以下形式:
  • 通配符模式:使用*和?作为通配符,*匹配任意多个字符,?匹配单个字符
  • 普通字符串:不包含通配符时进行包含匹配
  • 特殊字符会被自动转义,确保安全匹配
cs大小写敏感设置,默认为不区分大小写
返回
返回匹配的DAData列表,如果没有找到匹配项,返回空列表

此函数为普通用户设计,提供了简单直观的查找方式。它会自动将通配符转换为正则表达式, 并对普通字符串进行安全转义处理。对于简单查找,这是最推荐的使用方式。

注解
  • 通配符转换规则:* → .*(匹配任意多个字符),? → .(匹配单个字符)
  • 特殊字符(如.、+、*等)在非通配符模式下会被自动转义
  • 性能说明:对于大量数据,通配符查找会有一定性能开销,建议缓存结果
警告
  • 如果pattern为空字符串,将返回空列表
  • 复杂匹配建议使用正则表达式版本以获得更好的性能和控制力
// 示例1:查找所有内机数据(通配符模式)
DADataManager* mgr = getDataManager();
QList<DAData> indoorData = mgr->findDatas("*indoor*");
// 这将匹配:391117_indoor_1, 391117_indoor_2, indoor_sensor等
// 示例2:查找特定编号的内机
QList<DAData> indoor1Data = mgr->findDatas("*indoor_1");
// 这将匹配:391117_indoor_1, system_indoor_1, indoor_1等
// 示例3:查找模块数据(不区分大小写)
QList<DAData> moduleData = mgr->findDatas("*module*");
// 这将匹配:module_001, MODULE_A, system_module等
// 示例4:查找系统数据(区分大小写)
QList<DAData> systemData = mgr->findDatas("System_*", Qt::CaseSensitive);
// 这将匹配:System_001,但不会匹配system_001
// 示例5:使用问号通配符
QList<DAData> sensorData = mgr->findDatas("sensor_?");
// 这将匹配:sensor_1, sensor_A,但不会匹配sensor_12
// 示例6:普通字符串查找(包含匹配)
QList<DAData> tempData = mgr->findDatas("temp");
// 这将匹配:temperature, temp_sensor, system_temp等
// 示例7:查找精确名称(结合通配符)
QList<DAData> exactData = mgr->findDatas("391117_indoor_1");
// 这将只匹配完全相同的名称
// 示例8:查找多个数据并处理结果
QList<DAData> results = mgr->findDatas("*indoor*");
for (const DAData& data : results) {
if (data.isDataFrame()) {
qDebug() << "找到内机数据:" << data.getName();
// 进一步处理数据...
}
}
DAData的数据管理类,实现数据操作的一些通知例如数据添加、删除、改名、内容改变等等
Definition DADataManager.h:18
QList< DAData > findDatas(const QString &pattern, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
使用通配符或普通字符串查找匹配的数据
Definition DADataManager.cpp:274
DAAbstractData的封装 可以放入QMap,QHash中,DAData的等于操作相当于创建一个引用
Definition DAData.h:25
参见
findDatas(const QRegularExpression&)
findDataExact()

◆ findDatasReg()

QList< DAData > DA::DADataManagerInterface::findDatasReg ( const QRegularExpression &  regex) const

使用正则表达式查找匹配的数据

参数
regex正则表达式对象,用于复杂模式匹配
返回
返回匹配的DAData列表,如果没有找到匹配项,返回空列表

此函数为高级用户设计,提供完整的正则表达式匹配能力。适合需要复杂匹配模式、 精确控制匹配规则或需要更高性能的场景。正则表达式提供了强大的模式匹配功能, 可以处理通配符无法表达的复杂逻辑。

注解
  • 传入的QRegularExpression必须是有效的,无效的正则表达式会返回空列表并输出警告
  • 此函数性能通常比通配符版本更好,因为避免了模式转换开销
  • 对于简单匹配,建议使用通配符版本以获得更好的可读性
警告
  • 复杂的正则表达式可能影响性能,特别是当数据量很大时
  • 确保正则表达式的正确性,错误的模式可能导致意外结果
  • 建议对复杂的正则表达式进行预编译以获得更好的性能
// 示例1:查找所有内机数据(正则表达式版本)
QRegularExpression regex1(".*indoor.*", QRegularExpression::CaseInsensitiveOption);
QList<DAData> indoorData = mgr->findDatas(regex1);
// 示例2:查找特定范围内的编号
QRegularExpression regex2(".*indoor_[1-3]"); // 匹配indoor_1, indoor_2, indoor_3
QList<DAData> specificIndoorData = mgr->findDatas(regex2);
// 示例3:精确匹配特定格式
QRegularExpression regex3("^391117_indoor_\\d+$"); // 匹配391117_indoor_后跟数字
QList<DAData> exactFormatData = mgr->findDatas(regex3);
// 示例4:使用预编译的正则表达式提高性能
static QRegularExpression precompiledRegex(".*module.*",
QRegularExpression::CaseInsensitiveOption);
precompiledRegex.optimize(); // 优化性能
QList<DAData> moduleData = mgr->findDatas(precompiledRegex);
// 示例5:复杂匹配 - 查找温度或湿度传感器
QRegularExpression complexRegex(".*(temp|humidity).*",
QRegularExpression::CaseInsensitiveOption);
QList<DAData> sensorData = mgr->findDatas(complexRegex);
// 示例6:匹配数字编号的内机(更精确)
QRegularExpression numberedRegex(".*indoor_\\d{2,3}"); // 匹配2-3位数字编号
QList<DAData> numberedIndoorData = mgr->findDatas(numberedRegex);
// 示例7:排除特定模式
QRegularExpression excludeRegex(".*(?<!test)_indoor.*"); // 匹配不以test结尾的前缀
QList<DAData> excludeTestData = mgr->findDatas(excludeRegex);
// 示例8:处理正则表达式错误
QRegularExpression invalidRegex("[invalid"); // 无效的正则表达式
if (invalidRegex.isValid()) {
QList<DAData> data = mgr->findDatas(invalidRegex);
} else {
qWarning() << "正则表达式无效:" << invalidRegex.errorString();
}
// 示例9:批量处理多个正则表达式
QList<QRegularExpression> regexList = {
QRegularExpression(".*indoor.*"),
QRegularExpression(".*module.*"),
QRegularExpression(".*system.*")
};
for (const QRegularExpression& regex : regexList) {
QList<DAData> matches = mgr->findDatas(regex);
qDebug() << "模式" << regex.pattern() << "找到" << matches.size() << "个匹配";
}
数据管理接口
Definition DADataManagerInterface.h:16
QList< DAData > findDatas(const QString &pattern, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
使用通配符或普通字符串查找匹配的数据
Definition DADataManagerInterface.cpp:198
参见
findDatas(const QString&, Qt::CaseSensitivity)

◆ getAllDatas()

QList< DAData > DA::DADataManagerInterface::getAllDatas ( ) const

获取所有数据

返回

◆ getData()

DAData DA::DADataManagerInterface::getData ( int  index) const

根据索引获取对应的值

参数
index
返回

◆ getDataById()

DAData DA::DADataManagerInterface::getDataById ( DAData::IdType  id) const

根据id获取数据

参数
id
返回

◆ getDataCount()

int DA::DADataManagerInterface::getDataCount ( ) const
virtual

获取变量管理器管理的数据数量

返回

◆ getDataIndex()

int DA::DADataManagerInterface::getDataIndex ( const DAData d) const

参数在变量管理器的索引

参数在变量管理器中有一个list来维护,这个索引就是链表的索引

参数
d
返回

◆ getOperateData()

virtual DAData DA::DADataManagerInterface::getOperateData ( ) const
pure virtual

获取当前正在操作的数据,当前正在操作的数据是指当前正在打开的表格所对应的数据

当前正在操作的数据是指数据操作表格正在操作的数据,如果当前没有打开任何数据,此函数返回一个空的DAData

返回

DA::DAAppDataManager 内被实现.

◆ getOperateDataSeries()

virtual QList< int > DA::DADataManagerInterface::getOperateDataSeries ( ) const
pure virtual

获取当前正在操作窗口操作的列名

如果用户当前正在操作一个表格,且选中了某几列,那么此函数会返回选中的列名

结合getOperateData 和此函数,即可获取当前用户正在操作的序列

参见
getOperateData
返回
返回选中的列索引,如果没有选中任何列,返回空列表

DA::DAAppDataManager 内被实现.

◆ getSelectDatas()

virtual QList< DAData > DA::DADataManagerInterface::getSelectDatas ( ) const
pure virtual

获取当前选中的数据,此函数要基于界面数据管理器选择的数据返回

当前选中的数据是指数据管理窗口正在选中的数据,如果没有选中任何数据,返回一个空列表

返回

DA::DAAppDataManager 内被实现.

◆ getUndoStack()

QUndoStack * DA::DADataManagerInterface::getUndoStack ( ) const

获取undo stack

返回

◆ removeData()

void DA::DADataManagerInterface::removeData ( DAData d)
virtual

移除数据

注解
此函数会发生信号
参见
dataRemoved
参数
d

◆ removeData_()

void DA::DADataManagerInterface::removeData_ ( DAData d)
virtual

带redo/undo的移除数据

注解
此函数会发生信号
参见
dataBeginRemove
dataEndRemoved
参数
d

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