From 8a524a5e0d02cc364ca77341eee8d6054ef861ea Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Mon, 27 Oct 2025 11:43:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E6=8A=A5=E8=AD=A6?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=95=B0=E6=8D=AE=E6=9D=A1=E4=BB=B6=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/alarmEventDataView.h | 3 +++ source/alarmEventDataView.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index d3d5bd8..c6d943c 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -22,8 +22,11 @@ public: bool matches(const EventData& event); void clear(); + QVector apply(const QVector& events); private: + bool isEmpty(); + QDateTime m_startTime; QDateTime m_endTime; QString m_station; diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 25c8965..d4784fc 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -55,6 +55,35 @@ void AlarmEventDataFilter::clear() m_status = -1; } +QVector AlarmEventDataFilter::apply(const QVector& events) +{ + if(isEmpty()) + return events; + + QVector filteredEvents; + filteredEvents.reserve(events.size()); //分配好内存,防止后面执行append时造成的多次扩容开销 + + for(const EventData& event : events) + { + if(matches(event)) + filteredEvents.append(event); + } + + return filteredEvents; //RVO + QT的隐式共享(QVector),不用担心开销 +} + +bool AlarmEventDataFilter::isEmpty() +{ + return !m_startTime.isValid() && + !m_endTime.isValid() && + m_station.isEmpty() && + m_bay.isEmpty() && + m_type == -1 && + m_severity.isEmpty() && + m_description.isEmpty() && + m_status == -1; +} + ///////------AlarmEventDataModel----- AlarmEventDataModel::AlarmEventDataModel(QObject* parent)