From 5814b2babef52f86f4171a2deacb52f289600e7b Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Thu, 29 Jan 2026 16:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=9F=B1=E5=BD=A2=E5=9B=BE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9D=A2=E6=9D=BF=E4=B8=AD=E5=A2=9E=E5=8A=A0=E6=9E=90?= =?UTF-8?q?=E6=9E=84=E6=97=B6=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=8F=96=E6=B6=88=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dataPanel/dpBarsChart.cpp | 21 +++++++++++++++++++++ dataPanel/dpBarsChart.h | 1 + source/measurementDataManager.cpp | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/dataPanel/dpBarsChart.cpp b/dataPanel/dpBarsChart.cpp index ec66ad0..02a31dc 100644 --- a/dataPanel/dpBarsChart.cpp +++ b/dataPanel/dpBarsChart.cpp @@ -132,6 +132,8 @@ dpBarsChart::dpBarsChart(QWidget* parent) dpBarsChart::~dpBarsChart() { + if(!m_requestDataList.isEmpty()) + MeasurementDataManager::instance()->cancelRequest(m_requestDataList, this); } void dpBarsChart::initQCP() @@ -244,6 +246,8 @@ void dpBarsChart::synchronizeConfigData(const configurationResults& cfg) QVector tickLabels; QHash> groupedBars; //按数据类型对bar进行分组,以实现可以按组放置以及设置颜色等操作 + QStringList newRequestDataList; + QStringList cancelRequestDataList; for(int i = 0; i < cfg.m_pModel_dataSource->rowCount(); i++) { QString itemText = cfg.m_pModel_dataSource->item(i, 0)->text(); @@ -293,8 +297,25 @@ void dpBarsChart::synchronizeConfigData(const configurationResults& cfg) double randomFloat = min + QRandomGenerator::global()->generateDouble() * (max - min); return QVariant::fromValue(randomFloat); });*/ + + newRequestDataList << dataID; } + QSet dataSet(newRequestDataList.begin(), newRequestDataList.end()); + for(const QString& data : std::as_const(m_requestDataList)) + { + if(!dataSet.contains(data)) + cancelRequestDataList << data; + } + + //获取实时数据 + if(!cancelRequestDataList.isEmpty()) + MeasurementDataManager::instance()->cancelRequest(cancelRequestDataList, this); + if(!newRequestDataList.isEmpty()) + MeasurementDataManager::instance()->requestData(newRequestDataList, this); + + m_requestDataList = QStringList(std::move(newRequestDataList)); + if(groupByType) { for(auto it = groupedBars.begin(); it != groupedBars.end(); ++it) diff --git a/dataPanel/dpBarsChart.h b/dataPanel/dpBarsChart.h index eec1451..bef7d8c 100644 --- a/dataPanel/dpBarsChart.h +++ b/dataPanel/dpBarsChart.h @@ -81,6 +81,7 @@ private: QHash m_bars; QHash m_barsGroups; bool m_updateData; + QStringList m_requestDataList; }; #endif diff --git a/source/measurementDataManager.cpp b/source/measurementDataManager.cpp index 90e6e17..8002a41 100644 --- a/source/measurementDataManager.cpp +++ b/source/measurementDataManager.cpp @@ -309,7 +309,7 @@ void MeasurementDataManager::requestData(const QStringList& measurements, QObjec for(const QString& dataID : measurements) { auto it = m_dataRequesetRecord.find(dataID); - if(it != m_dataRequesetRecord.end() && !it.value().contains(requester)) + if(it != m_dataRequesetRecord.end()/* && !it.value().contains(requester)*/) it.value().insert(requester); else {