#include "dateTimeWidget.h" #include "./ui_dateTimeWidget.h" #include "dateTimeSelectionPanel.h" #include #include DateTimeWidget::DateTimeWidget(QWidget *parent) : QWidget(parent) , ui(new Ui::dateTimeWidget) { ui->setupUi(this); setAttribute(Qt::WA_TranslucentBackground); initialize(); } DateTimeWidget::~DateTimeWidget() { delete ui; if(m_pTimer_Range->isActive()) m_pTimer_Range->stop(); if(m_pTimer_RealTime->isActive()) m_pTimer_RealTime->stop(); } bool DateTimeWidget::eventFilter(QObject* obj, QEvent* event) { QPushButton *pButton = qobject_cast(obj); if(pButton) { QString strName = pButton->property("name").toString(); if(strName == "historicalDataBtn") { if(event->type() == QEvent::Enter) { pButton->setText(QString::fromWCharArray(L"实时数据")); return true; } else if(event->type() == QEvent::Leave) { pButton->setText(QString::fromWCharArray(L"历史数据")); return true; } } } return QObject::eventFilter(obj, event); } void DateTimeWidget::initialize() { ui->btnHistoricalData->setProperty("name", "historicalDataBtn"); ui->btnHistoricalData->installEventFilter(this); 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"); connect(ui->btnRange_1m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_3m->setProperty("range", 3*nMinUnit); ui->btnRange_3m->setProperty("name", "3m"); connect(ui->btnRange_3m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_5m->setProperty("range", 5*nMinUnit); ui->btnRange_5m->setProperty("name", "5m"); connect(ui->btnRange_5m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_10m->setProperty("range", 10*nMinUnit); ui->btnRange_10m->setProperty("name", "10m"); connect(ui->btnRange_10m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_30m->setProperty("range", 30*nMinUnit); ui->btnRange_30m->setProperty("name", "30m"); connect(ui->btnRange_30m, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_1h->setProperty("range", 1*60*nMinUnit); ui->btnRange_1h->setProperty("name", "1h"); connect(ui->btnRange_1h, SIGNAL(clicked()), this, SLOT(onBtnClicked_range())); ui->btnRange_1d->setProperty("range", 24*60*nMinUnit); ui->btnRange_1d->setProperty("name", "1d"); 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())); connect(ui->btnRangeSelect1, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect())); connect(ui->btnRangeSelect2, SIGNAL(clicked()), this, SLOT(onBtnClicked_rangeSelect())); QString strCurrentDate = QDate::currentDate().toString("yyyy/MM/dd"); ui->btnDate->setText(strCurrentDate); QString strCurrentTime = QTime::currentTime().toString("HH:mm:ss"); ui->label_time->setText(strCurrentTime); 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_pSelectionPanel = new DateTimeSelectionPanel(this); connect(m_pSelectionPanel, SIGNAL(selectResults(QDateTime)), this, SLOT(onDateTimeSelectResults(QDateTime))); } void DateTimeWidget::onBtnClicked_historicalData() { ui->stacked_time->setCurrentIndex(0); } void DateTimeWidget::onBtnClicked_realTimeData() { } void DateTimeWidget::onBtnClicked_date() { ui->btnHistoricalData->setText(QString::fromWCharArray(L"历史数据")); ui->stacked_time->setCurrentIndex(1); emit showMask(); QPoint originPoint = ui->btnDate->mapToGlobal(QPoint(0, 0)); int nX = originPoint.x() + (ui->btnDate->width() - m_pSelectionPanel->width()); int nY = originPoint.y() + ui->btnDate->height(); m_pSelectionPanel->move(nX, nY); m_pSelectionPanel->show_(); } void DateTimeWidget::onBtnClicked_rangeSelect() { ui->stacked_range->setCurrentIndex(1); m_pTimer_Range->start(5000); } void DateTimeWidget::onBtnClicked_range() { QPushButton* pBtn = qobject_cast(sender()); 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"); ui->stacked_range->setCurrentIndex(0); if(m_pTimer_Range->isActive()) m_pTimer_Range->stop(); } void DateTimeWidget::onTimeout_rangeSelect() { ui->stacked_range->setCurrentIndex(0); } void DateTimeWidget::onTimeout_realTime() { QString strCurrentTime = QTime::currentTime().toString("HH:mm:ss"); 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); } } void DateTimeWidget::onDateTimeSelectResults(QDateTime dateTime) { if(dateTime.date() == QDate::currentDate()) { ui->stacked_time->setCurrentIndex(0); emit hideMask(); } else emit viewHistoricalData(dateTime); }