From 7c2d409091ac87302cf3cd286bcfd4646dbb7b7b Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Tue, 17 Dec 2024 16:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90TimeLine=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E5=85=B6=E5=AE=83=E6=97=B6=E9=97=B4=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E4=B9=8B=E9=97=B4=E7=9A=84=E6=95=B0=E6=8D=AE=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=E5=92=8C=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dashboardFrame.h | 2 + include/dateTimeWidget.h | 6 ++- include/global.h | 28 +++++++++++ source/dashboardFrame.cpp | 42 ++++++++++++++-- source/dateTimeSelectionPanel.cpp | 4 ++ source/dateTimeWidget.cpp | 81 ++++++++++++++++--------------- source/global.cpp | 24 +++++++++ ui/dateTimeWidget.ui | 16 +++--- util/TimeLine/timeLineItem.cpp | 19 ++++++-- util/TimeLine/timeLineItem.h | 29 ++--------- util/TimeLine/timeLineWidget.cpp | 22 ++++++++- util/TimeLine/timeLineWidget.h | 10 ++++ util/TimeLine/timeLine_globals.h | 6 --- 13 files changed, 201 insertions(+), 88 deletions(-) diff --git a/include/dashboardFrame.h b/include/dashboardFrame.h index 495fbe9..65ce412 100644 --- a/include/dashboardFrame.h +++ b/include/dashboardFrame.h @@ -82,6 +82,8 @@ public slots: void onSignal_dashboardTabMoved(int, int); //拖动tab引发了位置变化 void onSignal_panelSelectResult(const QString&); + void onSignal_timeRangeChanged(TimeUnit); + void onSignal_viewRealTimeData(); void onSignal_viewHistoricalData(QDateTime); private: diff --git a/include/dateTimeWidget.h b/include/dateTimeWidget.h index cd98283..67cedea 100644 --- a/include/dateTimeWidget.h +++ b/include/dateTimeWidget.h @@ -21,6 +21,8 @@ public: ~DateTimeWidget(); void setDateTime(QDateTime); + void setState(DateTimeWidgetState); + void setRange(TimeUnit); protected: bool eventFilter(QObject*, QEvent*); @@ -38,7 +40,8 @@ public slots: void onDateTimeSelectResults(QDateTime); signals: - void setRange(int); + void timeRangeChanged(TimeUnit); + void viewRealTimeData(); void viewHistoricalData(QDateTime); void showMask(); @@ -46,7 +49,6 @@ signals: private: void initialize(); - void setState(DateTimeWidgetState); Ui::dateTimeWidget* ui; QTimer* m_pTimer_RealTime; diff --git a/include/global.h b/include/global.h index e21714e..2bf4444 100644 --- a/include/global.h +++ b/include/global.h @@ -1,6 +1,9 @@ #ifndef GLOBAL_H #define GLOBAL_H +#include +#include + enum MessageDialogType { type_information = 0, @@ -21,6 +24,31 @@ enum DateTimeWidgetState historical }; +enum TimeUnit +{ + TU_Year = 1, //yyyy + TU_Month, //yyyy/M/1 + TU_Day, //M/d + TU_Hour, //M/d/hh + TU_Minute_30, //hh:mm + TU_Minute_20, //hh:mm + TU_Minute_15, //hh:mm + TU_Minute_10, //hh:mm + TU_Minute_5, //hh:mm + TU_Minute_3, //hh:mm + TU_Minute_1, //hh:mm + TU_Second_30, //hh:mm:ss + TU_Second_10, //hh:mm:ss + TU_Second_1, //hh:mm:ss + TU_MSecond_500, //mm:ss:z + TU_MSecond_100, //mm:ss:z + TU_MSecond_50, //mm:ss:z + TU_MSecond_10 //mm:ss:z +}; + extern MessageDialogBtn g_msgDlgBtn; +extern QHash g_timeUnit; + +void initializeGlobalVariable(); #endif diff --git a/source/dashboardFrame.cpp b/source/dashboardFrame.cpp index cc44061..2a8a589 100644 --- a/source/dashboardFrame.cpp +++ b/source/dashboardFrame.cpp @@ -44,12 +44,16 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType ui->btnAlarmNoticatio->setVisible(false); } + initializeGlobalVariable(); + m_pDateTimeWidget = new DateTimeWidget(this); m_pDateTimeWidget->setObjectName("dateTimeWidget"); ui->layout_dateTime->addWidget(m_pDateTimeWidget); connect(m_pDateTimeWidget, SIGNAL(showMask()), this, SLOT(onSignal_showMask())); connect(m_pDateTimeWidget, SIGNAL(hideMask()), this, SLOT(onSignal_hideMask())); + connect(m_pDateTimeWidget, SIGNAL(viewRealTimeData()), this, SLOT(onSignal_viewRealTimeData())); connect(m_pDateTimeWidget, SIGNAL(viewHistoricalData(QDateTime)), this, SLOT(onSignal_viewHistoricalData(QDateTime))); + connect(m_pDateTimeWidget, SIGNAL(timeRangeChanged(TimeUnit)), this, SLOT(onSignal_timeRangeChanged(TimeUnit))); m_pDashboardTabBar = new CustomTabBar(this); m_pDashboardTabBar->setFrame(this); @@ -62,6 +66,9 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType m_pTimeLineWidget->setTimelineColor(QColor(250, 250, 250)); m_pTimeLineWidget->setTimeScaleSize(200); ui->layout_timeLine->addWidget(m_pTimeLineWidget); + connect(m_pTimeLineWidget, SIGNAL(viewHistoricalData(QDateTime)), this, SLOT(onSignal_viewHistoricalData(QDateTime))); + connect(m_pTimeLineWidget, SIGNAL(timeScaleUnitChanged(TimeUnit)), this, SLOT(onSignal_timeRangeChanged(TimeUnit))); + m_pTimeLineWidget->syncTimeUnit(); connect(ui->btnAddDashboard, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDashboard())); connect(ui->btnAddPanel, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDataPanel())); @@ -76,6 +83,9 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType DashboardFrame::~DashboardFrame() { delete ui; + + if(m_pTimer_RealTime->isActive()) + m_pTimer_RealTime->stop(); } bool DashboardFrame::eventFilter(QObject* obj, QEvent* event) @@ -609,7 +619,7 @@ void DashboardFrame::onSignal_renameDashboard() } showTransparentMask(); - QPoint originPoint = ui->navigationPanel->mapToGlobal(QPoint(0, 0)); + //QPoint originPoint = ui->navigationPanel->mapToGlobal(QPoint(0, 0)); int nX = (ui->navigationPanel->width() - m_pDashboardNamingDialog->width()) * 0.5; int nY = ui->navigationPanel->y() + ui->navigationPanel->height() * 0.5; m_pDashboardNamingDialog->setGeometry(nX, nY, m_pDashboardNamingDialog->width(), m_pDashboardNamingDialog->height()); @@ -624,18 +634,44 @@ void DashboardFrame::onSignal_panelSelectResult(const QString& strType) m_curActiveDashboard->addPanel(strType); } +void DashboardFrame::onSignal_timeRangeChanged(TimeUnit unit) +{ + QObject* pObject = QObject::sender(); + if(pObject->objectName() == "dateTimeWidget") + { + m_pTimeLineWidget->setTimeScaleUnit(unit); + } + else if(pObject->objectName() == "timeLineWidget") + { + m_pDateTimeWidget->setRange(unit); + } +} + +void DashboardFrame::onSignal_viewRealTimeData() +{ + if(!m_pTimer_RealTime->isActive()) + m_pTimer_RealTime->start(1000); + + m_pTimeLineWidget->setDisplayState(realTime); +} + void DashboardFrame::onSignal_viewHistoricalData(QDateTime dateTime) { //qDebug() << "viewHistoricalData: " + dateTime.date().toString("yyyy/MM/dd"); hideTransparentMask(); + if(m_pTimer_RealTime->isActive()) + m_pTimer_RealTime->stop(); + QObject* pObject = QObject::sender(); if(pObject->objectName() == "dateTimeWidget") { - + m_pTimeLineWidget->setDateTime(dateTime); + m_pTimeLineWidget->setDisplayState(historical); } else if(pObject->objectName() == "timeLineWidget") { - + m_pDateTimeWidget->setDateTime(dateTime); + m_pDateTimeWidget->setState(historical); } } diff --git a/source/dateTimeSelectionPanel.cpp b/source/dateTimeSelectionPanel.cpp index 624c459..f70c15e 100644 --- a/source/dateTimeSelectionPanel.cpp +++ b/source/dateTimeSelectionPanel.cpp @@ -32,6 +32,10 @@ void DateTimeSelectionPanel::show_() QDate today = QDate::currentDate(); m_pCalendar->setSelectedDate(today); m_pCalendar->showToday(); + + ui->btn_year->setText(QString::number(m_pCalendar->selectedDate().year())); + ui->btn_month->setText(QString::number(m_pCalendar->selectedDate().month())); + show(); } diff --git a/source/dateTimeWidget.cpp b/source/dateTimeWidget.cpp index d285e80..b34df90 100644 --- a/source/dateTimeWidget.cpp +++ b/source/dateTimeWidget.cpp @@ -58,31 +58,31 @@ void DateTimeWidget::initialize() connect(ui->btnDate, SIGNAL(clicked()), this, SLOT(onBtnClicked_date())); connect(ui->btnHistoricalData, SIGNAL(clicked()), this, SLOT(onBtnClicked_historicalData())); - int nMinUnit = 60; //以秒为最小单位 - ui->btnRange_1m->setProperty("range", 1*nMinUnit); - ui->btnRange_1m->setProperty("name", "1m"); + //int nMinUnit = 60 * 1000; //以毫秒为最小单位 + //ui->btnRange_1m->setProperty("range", 1*nMinUnit); + ui->btnRange_1m->setProperty("timeUnit", TU_Minute_1); connect(ui->btnRange_1m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_3m->setProperty("range", 3*nMinUnit); - ui->btnRange_3m->setProperty("name", "3m"); + //ui->btnRange_3m->setProperty("range", 3*nMinUnit); + ui->btnRange_3m->setProperty("timeUnit", TU_Minute_3); connect(ui->btnRange_3m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_5m->setProperty("range", 5*nMinUnit); - ui->btnRange_5m->setProperty("name", "5m"); + //ui->btnRange_5m->setProperty("range", 5*nMinUnit); + ui->btnRange_5m->setProperty("timeUnit", TU_Minute_5); connect(ui->btnRange_5m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_10m->setProperty("range", 10*nMinUnit); - ui->btnRange_10m->setProperty("name", "10m"); + //ui->btnRange_10m->setProperty("range", 10*nMinUnit); + ui->btnRange_10m->setProperty("timeUnit", TU_Minute_10); connect(ui->btnRange_10m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_30m->setProperty("range", 30*nMinUnit); - ui->btnRange_30m->setProperty("name", "30m"); + //ui->btnRange_30m->setProperty("range", 30*nMinUnit); + ui->btnRange_30m->setProperty("timeUnit", TU_Minute_30); connect(ui->btnRange_30m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_1h->setProperty("range", 1*60*nMinUnit); - ui->btnRange_1h->setProperty("name", "1h"); + //ui->btnRange_1h->setProperty("range", 1*60*nMinUnit); + ui->btnRange_1h->setProperty("timeUnit", TU_Hour); connect(ui->btnRange_1h, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_1d->setProperty("range", 24*60*nMinUnit); - ui->btnRange_1d->setProperty("name", "1d"); + //ui->btnRange_1d->setProperty("range", 24*60*nMinUnit); + ui->btnRange_1d->setProperty("timeUnit", TU_Day); connect(ui->btnRange_1d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); - ui->btnRange_7d->setProperty("range", 7*24*60*nMinUnit); - ui->btnRange_7d->setProperty("name", "7d"); - connect(ui->btnRange_7d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); + //ui->btnRange_30d->setProperty("range", 30*24*60*nMinUnit); + ui->btnRange_30d->setProperty("timeUnit", TU_Month); + connect(ui->btnRange_30d, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); connect(ui->btnRangeSelect1, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect())); connect(ui->btnRangeSelect2, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect())); @@ -102,6 +102,19 @@ void DateTimeWidget::initialize() connect(m_pSelectionPanel, SIGNAL(selectResults(QDateTime)), this, SLOT(onDateTimeSelectResults(QDateTime))); } +void DateTimeWidget::setRange(TimeUnit unit) +{ + QString strName = g_timeUnit.value(unit); + ui->btnRangeSelect1->setText(strName); + QChar c = strName.back(); + if(c == 'm') + ui->btnRangeSelect2->setText("Minute Chart Range"); + else if(c == 'h') + ui->btnRangeSelect2->setText("Hour Chart Range"); + else if(c == 'd') + ui->btnRangeSelect2->setText("Day Chart Range"); +} + void DateTimeWidget::setState(DateTimeWidgetState state) { if(state == realTime) @@ -121,7 +134,7 @@ void DateTimeWidget::setDateTime(QDateTime dateTime) { QString strTime = dateTime.time().toString("HH:mm:ss"); ui->label_time->setText(strTime); - if(dateTime.time() == QTime(0,0,0)) + //if(dateTime.time() == QTime(0,0,0)) { QString strDate = dateTime.date().toString("yyyy/MM/dd"); ui->btnDate->setText(strDate); @@ -131,6 +144,7 @@ void DateTimeWidget::setDateTime(QDateTime dateTime) void DateTimeWidget::onBtnClicked_historicalData() { setState(realTime); + emit viewRealTimeData(); } void DateTimeWidget::onBtnClicked_realTimeData() { @@ -139,7 +153,6 @@ void DateTimeWidget::onBtnClicked_realTimeData() void DateTimeWidget::onBtnClicked_date() { - setState(historical); emit showMask(); QPoint originPoint = ui->btnDate->mapToGlobal(QPoint(0, 0)); @@ -161,18 +174,9 @@ void DateTimeWidget::onBtnClicked_range() if(!pBtn) return; - int nRange = pBtn->property("range").toInt(); - emit setRange(nRange); - - QString strName = pBtn->property("name").toString(); - ui->btnRangeSelect1->setText(strName); - QChar c = strName.back(); - if(c == 'm') - ui->btnRangeSelect2->setText("Minute Chart Range"); - else if(c == 'h') - ui->btnRangeSelect2->setText("Hour Chart Range"); - else if(c == 'd') - ui->btnRangeSelect2->setText("Day Chart Range"); + TimeUnit unit = (TimeUnit)pBtn->property("timeUnit").toInt(); + setRange(unit); + emit timeRangeChanged(unit); ui->stacked_range->setCurrentIndex(0); if(m_pTimer_Range->isActive()) @@ -197,14 +201,13 @@ void DateTimeWidget::onTimeout_realTime() void DateTimeWidget::onDateTimeSelectResults(QDateTime dateTime) { - if(dateTime.date() == QDate::currentDate()) + if(dateTime.date() == QDate::currentDate() && ui->stacked_time->currentIndex() == 0) { - setState(realTime); emit hideMask(); + return; } - else - { - dateTime.setTime(QTime::currentTime()); - emit viewHistoricalData(dateTime); - } + + setState(historical); + dateTime.setTime(QTime::currentTime()); + emit viewHistoricalData(dateTime); } diff --git a/source/global.cpp b/source/global.cpp index c7a82b0..317f51a 100644 --- a/source/global.cpp +++ b/source/global.cpp @@ -1,3 +1,27 @@ #include "global.h" MessageDialogBtn g_msgDlgBtn = btn_Null; + +QHash g_timeUnit; + +void initializeGlobalVariable() +{ + g_timeUnit.insert(TU_Year, QString::fromWCharArray(L"365d")); + g_timeUnit.insert(TU_Month, QString::fromWCharArray(L"30d")); + g_timeUnit.insert(TU_Day, QString::fromWCharArray(L"1d")); + g_timeUnit.insert(TU_Hour, QString::fromWCharArray(L"1h")); + g_timeUnit.insert(TU_Minute_30, QString::fromWCharArray(L"30m")); + g_timeUnit.insert(TU_Minute_20, QString::fromWCharArray(L"20m")); + g_timeUnit.insert(TU_Minute_15, QString::fromWCharArray(L"15m")); + g_timeUnit.insert(TU_Minute_10, QString::fromWCharArray(L"10m")); + g_timeUnit.insert(TU_Minute_5, QString::fromWCharArray(L"5m")); + g_timeUnit.insert(TU_Minute_3, QString::fromWCharArray(L"3m")); + g_timeUnit.insert(TU_Minute_1, QString::fromWCharArray(L"1m")); + g_timeUnit.insert(TU_Second_30, QString::fromWCharArray(L"30s")); + g_timeUnit.insert(TU_Second_10, QString::fromWCharArray(L"10s")); + g_timeUnit.insert(TU_Second_1, QString::fromWCharArray(L"1s")); + g_timeUnit.insert(TU_MSecond_500, QString::fromWCharArray(L"500ms")); + g_timeUnit.insert(TU_MSecond_100, QString::fromWCharArray(L"100ms")); + g_timeUnit.insert(TU_MSecond_50, QString::fromWCharArray(L"50ms")); + g_timeUnit.insert(TU_MSecond_10, QString::fromWCharArray(L"10ms")); +} diff --git a/ui/dateTimeWidget.ui b/ui/dateTimeWidget.ui index a57bf38..9303f98 100644 --- a/ui/dateTimeWidget.ui +++ b/ui/dateTimeWidget.ui @@ -106,7 +106,7 @@ color:rgb(250,250,250); 11:39:52 - Qt::AlignmentFlag::AlignCenter + Qt::AlignCenter @@ -300,7 +300,7 @@ background-color:transparent; - Qt::Orientation::Horizontal + Qt::Horizontal @@ -314,13 +314,13 @@ background-color:transparent; - 65 + 100 0 - 65 + 100 16777215 @@ -342,7 +342,7 @@ QPushButton:pressed } - 30m + 500ms true @@ -352,7 +352,7 @@ QPushButton:pressed - Qt::Orientation::Horizontal + Qt::Horizontal @@ -654,7 +654,7 @@ background-color:transparent; - + 41 @@ -684,7 +684,7 @@ background-color:transparent; } - 7d + 30d diff --git a/util/TimeLine/timeLineItem.cpp b/util/TimeLine/timeLineItem.cpp index e5162aa..1c20c97 100644 --- a/util/TimeLine/timeLineItem.cpp +++ b/util/TimeLine/timeLineItem.cpp @@ -17,13 +17,14 @@ public: QDateTime m_rightTime; //当前时间右边第一个需要输出展示的时间点 int m_curTimePos; //当前时间所在的位置(x值),默认在中间(=0) int m_rightTimePos; - DisplayState m_curState; int m_scaleSize; //时间刻度大小,单位为像素 int m_scaleFactor; //缩放倍数 bool m_leftMouseIsDown; //鼠标左键是否按下 QPointF m_mouseDownPoint; //鼠标左键按下的坐标 QDateTime m_mouseDownTime; //鼠标左键是按下坐标对应的时间 + + DateTimeWidgetState m_curState; }; TimeLineItemPrivate::TimeLineItemPrivate() { @@ -33,7 +34,7 @@ TimeLineItemPrivate::TimeLineItemPrivate() m_rightTime = m_curTime; m_curTimePos = 0; m_rightTimePos = 0; - m_curState = RealTime; + m_curState = realTime; m_scaleSize = 100; m_scaleFactor = (int)m_curTimeUnit; } @@ -70,7 +71,7 @@ void TimeLineItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* opti QFont font = painter->font(); QString strCurState = ""; //绘制title,包含当前日期显示、状态显示,不同状态对应不同颜色 - if(d_ptr->m_curState == RealTime) + if(d_ptr->m_curState == realTime) { brush.setColor(QColor(39, 102, 59)); brush.setStyle(Qt::SolidPattern); @@ -578,7 +579,7 @@ void TimeLineItem::setScaleSize(int size) d_ptr->m_scaleSize = size; } -void TimeLineItem::setState(DisplayState state) +void TimeLineItem::setState(DateTimeWidgetState state) { d_ptr->m_curState = state; } @@ -618,4 +619,14 @@ void TimeLineItem::zoomOut() //qDebug() << d_ptr->m_curTimeUnit; } +void TimeLineItem::setTimeUnit(TimeUnit unit) +{ + d_ptr->m_curTimeUnit = unit; +} + +TimeUnit TimeLineItem::timeUnit() +{ + return d_ptr->m_curTimeUnit; +} + } // namespace TimeLine diff --git a/util/TimeLine/timeLineItem.h b/util/TimeLine/timeLineItem.h index 074480c..3af71a3 100644 --- a/util/TimeLine/timeLineItem.h +++ b/util/TimeLine/timeLineItem.h @@ -13,36 +13,13 @@ ** 这样可以保证拖动时跨越时间区间时,左右时刻可以无缝的转换,从而完成平滑的拖动效果 ** ******************************************************************************/ - -#include "timeLine_globals.h" +#include "global.h" #include #include namespace TimeLine { -enum TimeUnit -{ - TU_Year = 1, //yyyy - TU_Month, //yyyy/M/1 - TU_Day, //M/d - TU_Hour, //M/d/hh - TU_Minute_30, //hh:mm - TU_Minute_20, //hh:mm - TU_Minute_15, //hh:mm - TU_Minute_10, //hh:mm - TU_Minute_5, //hh:mm - TU_Minute_3, //hh:mm - TU_Minute_1, //hh:mm - TU_Second_30, //hh:mm:ss - TU_Second_10, //hh:mm:ss - TU_Second_1, //hh:mm:ss - TU_MSecond_500, //mm:ss:z - TU_MSecond_100, //mm:ss:z - TU_MSecond_50, //mm:ss:z - TU_MSecond_10 //mm:ss:z -}; - class TimeLineItemPrivate; class TimeLineItem : public QGraphicsObject { @@ -56,7 +33,7 @@ public: void updateBoundingRect(const QRect&); void setLineColor(QColor); void setScaleSize(int); - void setState(DisplayState); + void setState(DateTimeWidgetState); void setTime(QDateTime); QDateTime time(); @@ -65,6 +42,8 @@ public: void zoomIn(); void zoomOut(); + void setTimeUnit(TimeUnit); + TimeUnit timeUnit(); protected: virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*); diff --git a/util/TimeLine/timeLineWidget.cpp b/util/TimeLine/timeLineWidget.cpp index fcb682e..8fc953c 100644 --- a/util/TimeLine/timeLineWidget.cpp +++ b/util/TimeLine/timeLineWidget.cpp @@ -71,9 +71,12 @@ void TimeLineWidget::mouseMoveEvent(QMouseEvent* e) if(offsetX < 0) offsetValue = -offsetValue; - d_ptr->m_timeLineItem->setTime(d_ptr->m_timeMousePress.addMSecs(-offsetValue)); + QDateTime dateTime = d_ptr->m_timeMousePress.addMSecs(-offsetValue); + d_ptr->m_timeLineItem->setTime(dateTime); d_ptr->m_ptMousePress = e->pos(); d_ptr->m_timeMousePress = d_ptr->m_timeLineItem->time(); + + emit viewHistoricalData(dateTime); } else QGraphicsView::mouseMoveEvent(e); @@ -94,6 +97,8 @@ void TimeLineWidget::wheelEvent(QWheelEvent* e) d_ptr->m_timeLineItem->zoomIn(); else d_ptr->m_timeLineItem->zoomOut(); + + emit timeScaleUnitChanged(d_ptr->m_timeLineItem->timeUnit()); } void TimeLineWidget::updateAll() @@ -117,8 +122,23 @@ void TimeLineWidget::setTimeScaleSize(int size) d_ptr->m_timeLineItem->setScaleSize(size); } +void TimeLineWidget::setTimeScaleUnit(TimeUnit unit) +{ + d_ptr->m_timeLineItem->setTimeUnit(unit); +} + void TimeLineWidget::setDateTime(QDateTime dateTime) { d_ptr->m_timeLineItem->setTime(dateTime); } +void TimeLineWidget::setDisplayState(DateTimeWidgetState state) +{ + d_ptr->m_timeLineItem->setState(state); +} + +void TimeLineWidget::syncTimeUnit() +{ + emit timeScaleUnitChanged(d_ptr->m_timeLineItem->timeUnit()); +} + diff --git a/util/TimeLine/timeLineWidget.h b/util/TimeLine/timeLineWidget.h index 2b0759d..e9652f5 100644 --- a/util/TimeLine/timeLineWidget.h +++ b/util/TimeLine/timeLineWidget.h @@ -1,6 +1,7 @@ #ifndef TIMELINEWIDGET_H #define TIMELINEWIDGET_H +#include "global.h" #include class TimeLineWidgetPrivate; @@ -16,7 +17,16 @@ public: void setBackground(QColor); void setTimelineColor(QColor); void setTimeScaleSize(int); //设置时间刻度大小(像素) + void setTimeScaleUnit(TimeUnit); //设置时间刻度单位 + void setDateTime(QDateTime); + void setDisplayState(DateTimeWidgetState); + + void syncTimeUnit(); + +signals: + void viewHistoricalData(QDateTime); + void timeScaleUnitChanged(TimeUnit); protected: virtual void resizeEvent(QResizeEvent*) override; diff --git a/util/TimeLine/timeLine_globals.h b/util/TimeLine/timeLine_globals.h index a75a188..f54044c 100644 --- a/util/TimeLine/timeLine_globals.h +++ b/util/TimeLine/timeLine_globals.h @@ -4,12 +4,6 @@ namespace TimeLine { -enum DisplayState -{ - RealTime, - Historical -}; - } #endif