QDialog 可移动

xiaoxiao2021-02-27  257

重写QDialog 的 void mousePressEvent(QMouseEvent *event)、 void mouseMoveEvent(QMouseEvent *event)、void mouseReleaseEvent(QMouseEvent *event) 三个函数,实现拖动QDialog标题栏移动QDialog的功能。 .h文件中定义如下成员变量 代码如下:

protected: void showEvent(QShowEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); private: bool m_bMovable; QPoint m_lastMousePos; QLabel* m_pTitleLabel;

.cpp中代码入下:

void mousePressEvent(QMouseEvent *event) { QPoint point = event->pos(); QRect rect = m_pTitleLabel->rect(); if (rect.contains(point)) { m_bMovable = true; m_lastMousePos = event->globalPos(); } else { m_bMovable = false; } } void mouseMoveEvent(QMouseEvent *event) { if (m_bMovable) { move(event->globalPos() - m_lastMousePos + pos()); m_lastMousePos = event->globalPos(); } } void mouseReleaseEvent(QMouseEvent *event) { m_bMovable = false; }
转载请注明原文地址: https://www.6miu.com/read-13679.html

最新回复(0)