diff --git a/dataPanel/dpConfigurationDialog.cpp b/dataPanel/dpConfigurationDialog.cpp index e3e4192..c5a640b 100644 --- a/dataPanel/dpConfigurationDialog.cpp +++ b/dataPanel/dpConfigurationDialog.cpp @@ -61,8 +61,8 @@ void dpConfigurationDialog::initialize() connect(ui->btnReomve_type, SIGNAL(clicked()), this, SLOT(onBtnClicked_remove_type())); connect(ui->btnReomve_source, SIGNAL(clicked()), this, SLOT(onBtnClicked_remove_source())); - connect(ui->typeSourceList, SIGNAL(clicked(const QModelIndex&)), this, SLOT(onItemClicked_typeSource(const QModelIndex&))); - connect(ui->dataSourceList, SIGNAL(clicked(const QModelIndex&)), this, SLOT(onItemClicked_dataSource(const QModelIndex&))); + connect(ui->typeSourceList, &QListView::clicked, this, &dpConfigurationDialog::onItemClicked_typeSource); + connect(ui->dataSourceList, &QListView::clicked, this, &dpConfigurationDialog::onItemClicked_dataSource); ///数据类型 //typeSourceList diff --git a/dataPanel/dpLineChart.cpp b/dataPanel/dpLineChart.cpp index fa68392..ae7556a 100644 --- a/dataPanel/dpLineChart.cpp +++ b/dataPanel/dpLineChart.cpp @@ -21,7 +21,6 @@ dpLineChart::~dpLineChart() { } - void dpLineChart::initQCP() { //m_pCustomPlot->axisRect()->setupFullAxesBox(); diff --git a/include/customBorderContainer.h b/include/customBorderContainer.h index 38b05d9..8839b29 100644 --- a/include/customBorderContainer.h +++ b/include/customBorderContainer.h @@ -10,6 +10,7 @@ #include #include #include +#include class QPropertyAnimation; class CustomBorderContainer : public QObject @@ -45,10 +46,10 @@ public: void setMinWindowSize(int, int); //设置窗口能缩放的最小尺寸 void setBorderSize(int); //设置边框尺寸 + void updateBorder(); //重绘border void showBorderDraw(); void hideBorderDraw(); void setAutoAdjustDistance(int); - void updateBorder(); //重绘border void setOperationOption(OperationOptions); private: @@ -65,14 +66,18 @@ private: void mouseMoveEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); void paintEvent(QPaintEvent*); + void timerEvent(QTimerEvent*); private: borderType m_type; QPoint m_ptMouseLast; + QPoint m_mouseMoveLengt; bool m_bMousIsPress; bool m_bShowPainterDraw; QString m_strOperation; CustomBorderContainer* m_pContainer; + + QBasicTimer m_repaintTimer; }; void iniBorder(); @@ -84,8 +89,9 @@ private: void scaleByLeftBottomBorder(const QPoint&); void scaleByRightTopBorder(const QPoint&); void scaleByRightBottomBorder(const QPoint&); - void moveByMoveBordr(const QPoint&); + void moveByMoveBorder(const QPoint&); void autoAdjustGeometry(const QString&); + void updateContentWidget(); QWidget* m_pWidget; int m_nMinWindowSize_width; diff --git a/include/dataPanel.h b/include/dataPanel.h index aa9e926..ae35958 100644 --- a/include/dataPanel.h +++ b/include/dataPanel.h @@ -70,7 +70,8 @@ public: protected: bool event(QEvent*); - /*void keyPressEvent(QKeyEvent*); + /*void paintEvent(QPaintEvent*); + void keyPressEvent(QKeyEvent*); void mousePressEvent(QMouseEvent*); void enterEvent(QEnterEvent*); void leaveEvent(QEvent*); diff --git a/source/customBorderContainer.cpp b/source/customBorderContainer.cpp index 62aff79..49e6728 100644 --- a/source/customBorderContainer.cpp +++ b/source/customBorderContainer.cpp @@ -3,9 +3,9 @@ #include #include -CustomBorderContainer::CustomBorder::CustomBorder(QWidget* parent, borderType type, CustomBorderContainer* container) +CustomBorderContainer::CustomBorder::CustomBorder(QWidget* parent, borderType type, CustomBorderContainer* container) : QLabel(parent) { - setParent(parent); + //setParent(parent); m_type = type; m_pContainer = container; m_bMousIsPress = false; @@ -103,6 +103,7 @@ void CustomBorderContainer::CustomBorder::mouseMoveEvent(QMouseEvent* event) if(m_bMousIsPress) { QPoint moveLength = event->globalPosition().toPoint() - m_ptMouseLast; + m_mouseMoveLengt = moveLength; switch(m_type) { case border_left: @@ -130,13 +131,19 @@ void CustomBorderContainer::CustomBorder::mouseMoveEvent(QMouseEvent* event) m_pContainer->scaleByRightBottomBorder(moveLength); break; case border_move: - m_pContainer->moveByMoveBordr(moveLength); + m_pContainer->moveByMoveBorder(moveLength); break; default: break; } m_ptMouseLast = event->globalPosition().toPoint(); } + + // if(!m_repaintTimer.isActive()) + // { + // m_repaintTimer.start(16, this); + // } + QLabel::mouseMoveEvent(event); } void CustomBorderContainer::CustomBorder::mouseReleaseEvent(QMouseEvent* event) @@ -146,7 +153,19 @@ void CustomBorderContainer::CustomBorder::mouseReleaseEvent(QMouseEvent* event) //if(container->m_opOptions & OperationOption::WidgetAutoAdjustGeometry) if(m_pContainer->m_opOptions.testFlag(OperationOption::WidgetAutoAdjustGeometry)) m_pContainer->autoAdjustGeometry(m_strOperation); - QLabel::mousePressEvent(event); + else + m_pContainer->updateBorder(); + + QLabel::mouseReleaseEvent(event); +} + +void CustomBorderContainer::CustomBorder::timerEvent(QTimerEvent* event) +{ + if(event->timerId() == m_repaintTimer.timerId()) + { + m_repaintTimer.stop(); + m_pContainer->updateContentWidget(); + } } void CustomBorderContainer::CustomBorder::showPainterDraw(bool bShow) @@ -158,7 +177,7 @@ CustomBorderContainer::CustomBorderContainer(QWidget *parent, int minWindowWidth : QObject(parent) { m_pWidget = parent; - setParent(parent); + //setParent(parent); m_nMinWindowSize_width = minWindowWidth; m_nMinWindowSize_height = minWindowHeight; m_nBorderSize = borderSize; @@ -240,6 +259,96 @@ void CustomBorderContainer::setAutoAdjustDistance(int nDistance) m_nAutoAdjustDistance = nDistance; } +void CustomBorderContainer::setOperationOption(OperationOptions options) +{ + m_opOptions = options; +} + +void CustomBorderContainer::scaleByLeftBorder(const QPoint& moveLength) +{ + //不能采用宽度判断:if(m_widget->width()pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width)) //左边界动态调整x坐标和width,判断这两个值的实时关系 + return; + + m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y(), m_pWidget->width() - moveLength.x(), m_pWidget->height()); + //updateBorder();因为moveBorder会显示出来,所以只对它实时刷新 + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByRightBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width)) //有边界动态调整width,判断width和x坐标的关系 + return; + + m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width() + moveLength.x(), m_pWidget->height()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByTopBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width(), m_pWidget->height() - moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByBottomBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width(), m_pWidget->height() + moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByLeftTopBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width) + || (m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width() - moveLength.x(), m_pWidget->height() - moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByLeftBottomBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width) + || (m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y(), m_pWidget->width() - moveLength.x(), m_pWidget->height() + moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByRightTopBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width) + || (m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width() + moveLength.x(), m_pWidget->height() - moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} +void CustomBorderContainer::scaleByRightBottomBorder(const QPoint& moveLength) +{ + if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width) + || (m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) + return; + + m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width() + moveLength.x(), m_pWidget->height() + moveLength.y()); + //updateBorder(); + m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); +} + +void CustomBorderContainer::moveByMoveBorder(const QPoint& moveLength) +{ + //m_pWidget->setUpdatesEnabled(false); + m_pWidget->move(moveLength + m_pWidget->pos()); + //m_pWidget->setUpdatesEnabled(true); +} + void CustomBorderContainer::updateBorder() { m_pBorder_Left->setGeometry(0, m_nBorderSize, m_nBorderSize, m_pWidget->height() - m_nBorderSize * 2); @@ -253,86 +362,9 @@ void CustomBorderContainer::updateBorder() m_pBorder_Move->setGeometry(m_nBorderSize, m_nBorderSize, m_pWidget->width() - m_nBorderSize * 2, m_nBorderSize * 10); } -void CustomBorderContainer::setOperationOption(OperationOptions options) +void CustomBorderContainer::updateContentWidget() { - m_opOptions = options; -} - -void CustomBorderContainer::scaleByLeftBorder(const QPoint& moveLength) -{ - //不能采用宽度判断:if(m_widget->width()pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width)) //左边界动态调整x坐标和width,判断这两个值的实时关系 - return; - - m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y(), m_pWidget->width() - moveLength.x(), m_pWidget->height()); - updateBorder(); -} -void CustomBorderContainer::scaleByRightBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width)) //有边界动态调整width,判断width和x坐标的关系 - return; - - m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width() + moveLength.x(), m_pWidget->height()); - updateBorder(); -} -void CustomBorderContainer::scaleByTopBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width(), m_pWidget->height() - moveLength.y()); - updateBorder(); -} -void CustomBorderContainer::scaleByBottomBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width(), m_pWidget->height() + moveLength.y()); - updateBorder(); -} -void CustomBorderContainer::scaleByLeftTopBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width) - || (m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width() - moveLength.x(), m_pWidget->height() - moveLength.y()); - updateBorder(); -} -void CustomBorderContainer::scaleByLeftBottomBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().x() + moveLength.x()) > (m_pWidget->pos().x() + m_pWidget->width() - m_nMinWindowSize_width) - || (m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x() + moveLength.x(), m_pWidget->pos().y(), m_pWidget->width() - moveLength.x(), m_pWidget->height() + moveLength.y()); - updateBorder(); -} -void CustomBorderContainer::scaleByRightTopBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width) - || (m_pWidget->pos().y() + moveLength.y()) > (m_pWidget->pos().y() + m_pWidget->height() - m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y() + moveLength.y(), m_pWidget->width() + moveLength.x(), m_pWidget->height() - moveLength.y()); - updateBorder(); -} -void CustomBorderContainer::scaleByRightBottomBorder(const QPoint& moveLength) -{ - if((m_pWidget->pos().x() + m_pWidget->width() + moveLength.x()) < (m_pWidget->pos().x() + m_nMinWindowSize_width) - || (m_pWidget->pos().y() + m_pWidget->height() + moveLength.y()) < (m_pWidget->pos().y() + m_nMinWindowSize_height)) - return; - - m_pWidget->setGeometry(m_pWidget->pos().x(), m_pWidget->pos().y(), m_pWidget->width() + moveLength.x(), m_pWidget->height() + moveLength.y()); - updateBorder(); -} - -void CustomBorderContainer::moveByMoveBordr(const QPoint& moveLength) -{ - //m_pWidget->setUpdatesEnabled(false); - m_pWidget->move(moveLength + m_pWidget->pos()); - //m_pWidget->setUpdatesEnabled(true); + m_pWidget->update(); } void CustomBorderContainer::autoAdjustGeometry(const QString& strOperation) @@ -349,7 +381,7 @@ void CustomBorderContainer::autoAdjustGeometry(const QString& strOperation) { int nDistance_X_Left2Left = m_pWidget->geometry().left(); int nDistance_X_Right2Right = m_pWidget->geometry().right() - parentWiget->width(); - int nDistance_X = m_nAutoAdjustDistance + 1; + int nDistance_X; if(nDistance_X_Left2Left == 0) nDistance_X = nDistance_X_Right2Right; else if(nDistance_X_Right2Right == 0) @@ -361,7 +393,7 @@ void CustomBorderContainer::autoAdjustGeometry(const QString& strOperation) int nDistance_Y_Top2Top = m_pWidget->geometry().top(); int nDistance_Y_Bottom2Bottom = m_pWidget->geometry().bottom() - parentWiget->height(); - int nDistance_Y = m_nAutoAdjustDistance + 1; + int nDistance_Y; if(nDistance_Y_Top2Top == 0) nDistance_Y = nDistance_Y_Bottom2Bottom; else if(nDistance_Y_Bottom2Bottom == 0) diff --git a/source/dashboard.cpp b/source/dashboard.cpp index fc56011..4b85169 100644 --- a/source/dashboard.cpp +++ b/source/dashboard.cpp @@ -51,7 +51,7 @@ Dashboard::Dashboard(const QString& strName, QObject *parent) Dashboard::~Dashboard() { - //在这里m_pDisplayArea和m_pTabButton不需要进行手动析构,因为QObject建立起的父子结构会自动析构,自动析构时不会将其置为nullptr,所以if判断无效,会引起'SIGSEGV'(存储器段错误)报错 + //m_pDisplayArea和m_pTab不需要手动析构,因为QObject建立起的父子结构会自动析构,自动析构时不会将其置为nullptr,所以if判断无效,会引起'SIGSEGV'(存储器段错误)报错 if(m_pTabMenu) { delete m_pTabMenu; diff --git a/source/dataPanel.cpp b/source/dataPanel.cpp index f46635f..95c4abf 100644 --- a/source/dataPanel.cpp +++ b/source/dataPanel.cpp @@ -31,6 +31,8 @@ DataPanel::DataPanel(QWidget *parent, DataPanelType type) : QDialog(parent) { setWindowFlags(Qt::FramelessWindowHint | Qt::SubWindow); + //setAttribute(Qt::WA_StaticContents, false); // 禁用静态内容优化 + //setAttribute(Qt::WA_PaintOnScreen, false); // 默认使用双缓冲 m_strName = ""; m_bMouseEnter = false; @@ -38,12 +40,17 @@ DataPanel::DataPanel(QWidget *parent, DataPanelType type) m_pContentWidget = nullptr; m_pScrollArea = nullptr; + /*setStyleSheet("QDialog{\n" + " border:2px solid rgb(76,88,105);\n" + " background-color:rgba(24,32,38,250);\n" + "}\n");*/ + QWidget* centralWidget = new QWidget(this); centralWidget->setObjectName("centralWidget"); - centralWidget->setStyleSheet("QWidget #centralWidget{\n" + /*centralWidget->setStyleSheet("QWidget #centralWidget{\n" " border:2px solid rgb(76,88,105);\n" " background-color:rgba(24,32,38,250);\n" - "}\n"); + "}\n");*/ QBoxLayout* centralLayout = new QBoxLayout(QBoxLayout::TopToBottom, this); centralLayout->setContentsMargins(0, 0, 0, 0); centralLayout->addWidget(centralWidget); @@ -67,6 +74,7 @@ DataPanel::DataPanel(QWidget *parent, DataPanelType type) connect(m_pToolWidget->ui->btnFullScree, SIGNAL(clicked()), this, SLOT(onToolBtnClicked_fullScreen())); connect(m_pToolWidget->ui->btnMenu, SIGNAL(clicked()), this, SLOT(onToolBtnClicked_menu())); m_pToolWidget->raise(); + m_pToolWidget->hide(); m_pToolMenu = new CustomMenu(this); connect(m_pToolMenu, SIGNAL(aboutToHide()), this, SLOT(onAboutToHide_toolMenu())); @@ -97,7 +105,7 @@ bool DataPanel::event(QEvent* event) } else if(event->type() == QEvent::Show) { - m_pToolWidget->move(this->width() - m_pToolWidget->width() - 8, 3); + //m_pToolWidget->move(this->width() - m_pToolWidget->width() - 8, 3); m_pConfigurationWidget->move((this->width() - m_pConfigurationWidget->width()) * 0.5, (this->height() - m_pConfigurationWidget->height()) * 0.5); } else if(event->type() == QEvent::Resize || event->type() == QEvent::Move) @@ -114,6 +122,7 @@ bool DataPanel::event(QEvent* event) else if(event->type() == QEvent::Enter) { //qDebug() << "Enter"; + m_pToolWidget->move(this->width() - m_pToolWidget->width() - 8, 3); m_pToolWidget->show(); QString strCurState = m_pToolWidget->ui->btnFullScree->property("currentState").toString(); if(strCurState == "enterFullScreen") @@ -128,11 +137,49 @@ bool DataPanel::event(QEvent* event) m_pCustomBorderContainer->hideBorderDraw(); } } + else if(event->type() == QEvent::Paint) + { + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + // 绘制背景 + painter.fillRect(rect(), QColor(24, 32, 38, 250)); // 原样式表背景色 + // 绘制边框 + QPen pen(QColor(76, 88, 105), 2); // 原样式表边框颜色和宽度 + painter.setPen(pen); + painter.drawRect(rect().adjusted(1, 1, -1, -1)); + } return QDialog::event(event); } -/*void DataPanel::keyPressEvent(QKeyEvent* e) +/*void DataPanel::paintEvent(QPaintEvent* event) +{ + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + // 绘制背景 + painter.fillRect(rect(), QColor(24, 32, 38, 250)); // 原样式表背景色 + // 绘制边框 + QPen pen(QColor(76, 88, 105), 2); // 原样式表边框颜色和宽度 + painter.setPen(pen); + painter.drawRect(rect().adjusted(1, 1, -1, -1)); + + // 双缓冲绘制 + QPainter painter(this); + QPixmap buffer(size()); + buffer.fill(Qt::transparent); + + QPainter bufferPainter(&buffer); + bufferPainter.setRenderHint(QPainter::Antialiasing); + + // 绘制带边框的背景 + bufferPainter.setPen(QPen(QColor(76,88,105),2)); + bufferPainter.setBrush(QColor(24,32,38,250)); + bufferPainter.drawRoundedRect(rect().adjusted(1, 1, -1, -1), 0, 0); + + painter.drawPixmap(0, 0, buffer); +} + +void DataPanel::keyPressEvent(QKeyEvent* e) { if(e->key() == Qt::Key_Escape) return; diff --git a/util/TimeLine/timeLineWidget.cpp b/util/TimeLine/timeLineWidget.cpp index f4b7adf..c094a83 100644 --- a/util/TimeLine/timeLineWidget.cpp +++ b/util/TimeLine/timeLineWidget.cpp @@ -76,6 +76,7 @@ void TimeLineWidget::mouseMoveEvent(QMouseEvent* e) d_ptr->m_ptMousePress = e->pos(); d_ptr->m_timeMousePress = d_ptr->m_timeLineItem->time(); + setDisplayState(historical); emit viewHistoricalData(dateTime); } else