完成TimeLine组件和其它时间组件之间的数据通信和同步
This commit is contained in:
parent
531d5a74c8
commit
7c2d409091
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
#ifndef GLOBAL_H
|
||||
#define GLOBAL_H
|
||||
|
||||
#include <QHash>
|
||||
#include <QString>
|
||||
|
||||
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<int, QString> g_timeUnit;
|
||||
|
||||
void initializeGlobalVariable();
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,27 @@
|
|||
#include "global.h"
|
||||
|
||||
MessageDialogBtn g_msgDlgBtn = btn_Null;
|
||||
|
||||
QHash<int, QString> 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"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ color:rgb(250,250,250);</string>
|
|||
<string>11:39:52</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
@ -300,7 +300,7 @@ background-color:transparent;
|
|||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
|
|
@ -314,13 +314,13 @@ background-color:transparent;
|
|||
<widget class="QPushButton" name="btnRangeSelect1">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>65</width>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>65</width>
|
||||
<width>100</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
|
|
@ -342,7 +342,7 @@ QPushButton:pressed
|
|||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>30m</string>
|
||||
<string>500ms</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
|
|
@ -352,7 +352,7 @@ QPushButton:pressed
|
|||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
|
|
@ -654,7 +654,7 @@ background-color:transparent;
|
|||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="btnRange_7d">
|
||||
<widget class="QPushButton" name="btnRange_30d">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>41</width>
|
||||
|
|
@ -684,7 +684,7 @@ background-color:transparent;
|
|||
}</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>7d</string>
|
||||
<string>30d</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -13,36 +13,13 @@
|
|||
** 这样可以保证拖动时跨越时间区间时,左右时刻可以无缝的转换,从而完成平滑的拖动效果
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
#include "timeLine_globals.h"
|
||||
#include "global.h"
|
||||
#include <QGraphicsObject>
|
||||
#include <QDateTime>
|
||||
|
||||
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*);
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef TIMELINEWIDGET_H
|
||||
#define TIMELINEWIDGET_H
|
||||
|
||||
#include "global.h"
|
||||
#include <QGraphicsView>
|
||||
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -4,12 +4,6 @@
|
|||
namespace TimeLine
|
||||
{
|
||||
|
||||
enum DisplayState
|
||||
{
|
||||
RealTime,
|
||||
Historical
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue