From b0d1055e7232db7eae74b202d1e2e7c0a9ee057b Mon Sep 17 00:00:00 2001 From: xinguankeli Date: Sat, 10 Jun 2023 09:06:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0dock=E6=A0=8F?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E6=82=AC=E5=81=9Citem=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E5=8A=A0=E6=B7=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dock栏鼠标悬停item背景加深 Log: 增加dock栏鼠标悬停item背景加深 --- frame/item/dockitem.cpp | 25 +++++++++++++++++++++++++ frame/item/dockitem.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/frame/item/dockitem.cpp b/frame/item/dockitem.cpp index aa776dbfe..9ee2bc526 100644 --- a/frame/item/dockitem.cpp +++ b/frame/item/dockitem.cpp @@ -23,6 +23,7 @@ QPointer DockItem::PopupWindow(nullptr); DockItem::DockItem(QWidget *parent) : QWidget(parent) , m_hover(false) + , m_pressed(false) , m_popupShown(false) , m_tapAndHold(false) , m_draging(false) @@ -134,12 +135,28 @@ void DockItem::updatePopupPosition() void DockItem::paintEvent(QPaintEvent *e) { + if(m_hover && !m_pressed) + { + QPainter painter(this); + painter.setBrush(QBrush(QColor(248, 248, 255))); + painter.setPen(Qt::NoPen); + QRect tempRect = rect(); + painter.drawRect(tempRect.x(), tempRect.y(), tempRect.width(), tempRect.height()); + }else if(m_hover && m_pressed) + { + QPainter painter(this); + painter.setBrush(Qt::gray); + painter.setPen(Qt::NoPen); + QRect tempRect = rect(); + painter.drawRect(tempRect.x(), tempRect.y(), tempRect.width(), tempRect.height()); + } QWidget::paintEvent(e); } void DockItem::mousePressEvent(QMouseEvent *e) { m_popupTipsDelayTimer->stop(); + m_pressed = true; hideNonModel(); if (e->button() == Qt::RightButton) { @@ -178,6 +195,7 @@ void DockItem::leaveEvent(QEvent *e) QWidget::leaveEvent(e); m_hover = false; + m_pressed = false; //FIXME: 可能是qt的bug,概率性导致崩溃,待修复 // m_hoverEffect->setHighlighting(false); m_popupTipsDelayTimer->stop(); @@ -189,6 +207,13 @@ void DockItem::leaveEvent(QEvent *e) update(); } +void DockItem::mouseReleaseEvent(QMouseEvent *event) +{ + m_pressed = false; + QWidget::mouseReleaseEvent(event); + update(); +} + const QRect DockItem::perfectIconRect() const { const QRect itemRect = rect(); diff --git a/frame/item/dockitem.h b/frame/item/dockitem.h index aff21c656..9789edfdc 100644 --- a/frame/item/dockitem.h +++ b/frame/item/dockitem.h @@ -69,6 +69,7 @@ public slots: void mousePressEvent(QMouseEvent *e) override; void enterEvent(QEvent *e) override; void leaveEvent(QEvent *e) override; + void mouseReleaseEvent(QMouseEvent *event) override; const QRect perfectIconRect() const; const QPoint popupMarkPoint() ; @@ -95,6 +96,7 @@ protected slots: protected: bool m_hover; + bool m_pressed; bool m_popupShown; bool m_tapAndHold; bool m_draging;