app.h
class app: public QDialog
{
Q_OBJECT
private:
bool moving = false; //表示窗口是否在鼠标操作下移动
QPoint m_lastPos; //上一次鼠标的位置
protected:
// 鼠标 拖动窗口的 鼠标事件
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
public:
explicit app(QWidget *parent = nullptr);
~app();
}
app.c
void Dialogin::mousePressEvent(QMouseEvent *event)
{
m_moving = true;
m_lastPos = event->globalPos() - pos();
return QDialog::mousePressEvent(event);
}
void Dialogin::mouseMoveEvent(QMouseEvent *event)
{
if(m_moving && (event->buttons() && Qt::LeftButton) && (event->globalPos() - m_lastPos).manhattanLength() > QApplication::startDragDistance())
{
move(event->globalPos() - m_lastPos);
m_lastPos = event->globalPos() - pos();
}
return QDialog::mouseMoveEvent(event);
}
void Dialogin::mouseReleaseEvent(QMouseEvent *event)
{
m_moving = false;
}
QT无边框窗口鼠标拖动事件
最新推荐文章于 2024-06-17 16:40:00 发布