实现统一时钟系统,驱动TimeLine和其它数据组件的实时数据驱动

This commit is contained in:
duanshengchao 2024-12-13 16:41:08 +08:00
parent 5ed47f24c8
commit 531d5a74c8
8 changed files with 88 additions and 15 deletions

View File

@ -10,6 +10,7 @@ class dashboardFrame;
}
QT_END_NAMESPACE
class QTimer;
class TransparentMask;
class MessageDialog;
class CustomTabBar;
@ -72,6 +73,8 @@ public slots:
void onMenuAction_dashboardList();
void onTimeout_realTime();
void onSignal_subDialogClose();
void onSignal_renameDashboard();
void onSignal_removeDashboard();
@ -99,6 +102,8 @@ private:
PanelSelectionDialog* m_pPanelSelectionDialog;
DateTimeWidget* m_pDateTimeWidget;
TimeLineWidget* m_pTimeLineWidget;
QTimer* m_pTimer_RealTime;
};
#endif

View File

@ -2,6 +2,7 @@
#define DATETIMEWIDGET_H
#include <QWidget>
#include "global.h"
QT_BEGIN_NAMESPACE
namespace Ui {
@ -19,6 +20,8 @@ public:
DateTimeWidget(QWidget *parent = nullptr);
~DateTimeWidget();
void setDateTime(QDateTime);
protected:
bool eventFilter(QObject*, QEvent*);
@ -43,6 +46,7 @@ signals:
private:
void initialize();
void setState(DateTimeWidgetState);
Ui::dateTimeWidget* ui;
QTimer* m_pTimer_RealTime;

View File

@ -15,6 +15,12 @@ enum MessageDialogBtn
btn_No
};
enum DateTimeWidgetState
{
realTime,
historical
};
extern MessageDialogBtn g_msgDlgBtn;
#endif

View File

@ -14,6 +14,7 @@
#include <QKeyEvent>
#include <QMenu>
#include <QTimer>
#include <QDateTime>
#include <QMimeData>
@ -44,6 +45,7 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
}
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()));
@ -55,6 +57,7 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
connect(m_pDashboardTabBar, SIGNAL(tabMoved(int, int)), this, SLOT(onSignal_dashboardTabMoved(int, int)));
m_pTimeLineWidget = new TimeLineWidget(this);
m_pTimeLineWidget->setObjectName("timeLineWidget");
m_pTimeLineWidget->setBackground(QColor(24, 32, 38));
m_pTimeLineWidget->setTimelineColor(QColor(250, 250, 250));
m_pTimeLineWidget->setTimeScaleSize(200);
@ -64,6 +67,10 @@ DashboardFrame::DashboardFrame(const QString& strName, dashboardFrame::frameType
connect(ui->btnAddPanel, SIGNAL(clicked()), this, SLOT(onBtnClicked_addDataPanel()));
//connect(ui->btnDashboradList1, SIGNAL(clicked()), this, SLOT(onBtnClicked_dashboardList()));
connect(ui->btnDashboradList2, SIGNAL(clicked()), this, SLOT(onBtnClicked_dashboardList()));
m_pTimer_RealTime = new QTimer(this);
connect(m_pTimer_RealTime, SIGNAL(timeout()), this, SLOT(onTimeout_realTime()));
m_pTimer_RealTime->start(1000);
}
DashboardFrame::~DashboardFrame()
@ -535,6 +542,13 @@ void DashboardFrame::onMenuAction_dashboardList()
setCurrentDashboard(strName);
}
void DashboardFrame::onTimeout_realTime()
{
QDateTime curDateTime = QDateTime::currentDateTime();
m_pDateTimeWidget->setDateTime(curDateTime);
m_pTimeLineWidget->setDateTime(curDateTime);
}
void DashboardFrame::onSignal_subDialogClose()
{
hideTransparentMask();
@ -612,6 +626,16 @@ void DashboardFrame::onSignal_panelSelectResult(const QString& strType)
void DashboardFrame::onSignal_viewHistoricalData(QDateTime dateTime)
{
qDebug() << "viewHistoricalData: " + dateTime.date().toString("yyyy/MM/dd");
//qDebug() << "viewHistoricalData: " + dateTime.date().toString("yyyy/MM/dd");
hideTransparentMask();
QObject* pObject = QObject::sender();
if(pObject->objectName() == "dateTimeWidget")
{
}
else if(pObject->objectName() == "timeLineWidget")
{
}
}

View File

@ -22,8 +22,8 @@ DateTimeWidget::~DateTimeWidget()
if(m_pTimer_Range->isActive())
m_pTimer_Range->stop();
if(m_pTimer_RealTime->isActive())
m_pTimer_RealTime->stop();
// if(m_pTimer_RealTime->isActive())
// m_pTimer_RealTime->stop();
}
bool DateTimeWidget::eventFilter(QObject* obj, QEvent* event)
@ -94,17 +94,43 @@ void DateTimeWidget::initialize()
m_pTimer_Range = new QTimer(this);
connect(m_pTimer_Range, SIGNAL(timeout()), this, SLOT(onTimeout_rangeSelect()));
m_pTimer_RealTime = new QTimer(this);
connect(m_pTimer_RealTime, SIGNAL(timeout()), this, SLOT(onTimeout_realTime()));
m_pTimer_RealTime->start(1000);
// m_pTimer_RealTime = new QTimer(this);
// connect(m_pTimer_RealTime, SIGNAL(timeout()), this, SLOT(onTimeout_realTime()));
// m_pTimer_RealTime->start(1000);
m_pSelectionPanel = new DateTimeSelectionPanel(this);
connect(m_pSelectionPanel, SIGNAL(selectResults(QDateTime)), this, SLOT(onDateTimeSelectResults(QDateTime)));
}
void DateTimeWidget::setState(DateTimeWidgetState state)
{
if(state == realTime)
{
//m_pTimer_RealTime->start(1000);
ui->stacked_time->setCurrentIndex(0);
}
else if(state == historical)
{
//m_pTimer_RealTime->stop();
ui->btnHistoricalData->setText(QString::fromWCharArray(L"历史数据"));
ui->stacked_time->setCurrentIndex(1);
}
}
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))
{
QString strDate = dateTime.date().toString("yyyy/MM/dd");
ui->btnDate->setText(strDate);
}
}
void DateTimeWidget::onBtnClicked_historicalData()
{
ui->stacked_time->setCurrentIndex(0);
setState(realTime);
}
void DateTimeWidget::onBtnClicked_realTimeData()
{
@ -113,8 +139,7 @@ void DateTimeWidget::onBtnClicked_realTimeData()
void DateTimeWidget::onBtnClicked_date()
{
ui->btnHistoricalData->setText(QString::fromWCharArray(L"历史数据"));
ui->stacked_time->setCurrentIndex(1);
setState(historical);
emit showMask();
QPoint originPoint = ui->btnDate->mapToGlobal(QPoint(0, 0));
@ -165,8 +190,8 @@ void DateTimeWidget::onTimeout_realTime()
ui->label_time->setText(strCurrentTime);
if(QTime::currentTime() == QTime(0,0,0))
{
QString strCurrentTime = QTime::currentTime().toString("HH:mm:ss");
ui->label_time->setText(strCurrentTime);
QString strCurrentDate = QDate::currentDate().toString("yyyy/MM/dd");
ui->btnDate->setText(strCurrentDate);
}
}
@ -174,9 +199,12 @@ void DateTimeWidget::onDateTimeSelectResults(QDateTime dateTime)
{
if(dateTime.date() == QDate::currentDate())
{
ui->stacked_time->setCurrentIndex(0);
setState(realTime);
emit hideMask();
}
else
{
dateTime.setTime(QTime::currentTime());
emit viewHistoricalData(dateTime);
}
}

View File

@ -176,6 +176,12 @@ QPushButton:pressed
</layout>
</widget>
<widget class="QWidget" name="page_realTimeData">
<property name="styleSheet">
<string notr="true">QWidget #page_realTimeData
{
background-color:transparent;
}</string>
</property>
<layout class="QHBoxLayout" name="hLayout__realTimeData">
<property name="spacing">
<number>0</number>

View File

@ -117,8 +117,8 @@ void TimeLineWidget::setTimeScaleSize(int size)
d_ptr->m_timeLineItem->setScaleSize(size);
}
void TimeLineWidget::setCurrentTime(QDateTime time)
void TimeLineWidget::setDateTime(QDateTime dateTime)
{
d_ptr->m_timeLineItem->setTime(dateTime);
}

View File

@ -16,7 +16,7 @@ public:
void setBackground(QColor);
void setTimelineColor(QColor);
void setTimeScaleSize(int); //设置时间刻度大小(像素)
void setCurrentTime(QDateTime);
void setDateTime(QDateTime);
protected:
virtual void resizeEvent(QResizeEvent*) override;