QT:當鼠標按下時,窗口跟隨鼠標走


***.h:


#include <QPoint>
#include <QMouseEvent>
class xxx{
……
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *envet);

private:
QPoint relativePos; // store relative position
……
}

***.cpp

void Desktop::mousePressEvent(QMouseEvent *event)
{
relativePos=this->pos()-event->globalPos();
}


void Desktop::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos()+ relativePos);

}

先上代碼,這里作解釋:

1)要包含<QPoint> <QMouseEvent>這兩個頭文件,QPoint用來記錄坐標,通過重新實現QMouseEvent鼠標相關事件實現當鼠標按下並移動時,窗口跟隨鼠標移動。
2) 使用relativePos記錄窗口頂點與鼠標按下時位置的差值。使用表達式:relativePos=this->pos()-event->globalPos();
3)當鼠標釋放后,將窗口頂點的坐標設置為鼠標當前的坐標加上之前的差值。使用表達式:this->move(event->globalPos()+ relativePos);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM