QPoint m_StartPoint; //鼠標按下起點 bool m_bMousePress; //按下鼠標左鍵 void CMyUpdateDlg::mouseMoveEvent(QMouseEvent *event) { //移動窗口 if (m_bMousePress) { QPoint curPoint = event->globalPos(); //按住移動時的位置 QPoint movePoint = curPoint - m_StartPoint;
//普通窗口 QPoint mainWinPos = this->pos(); this->move(mainWinPos.x() + movePoint.x(), mainWinPos.y() + movePoint.y());
//標題欄
QPoint mainWinPos = QPoint(parentWidget()->x(), parentWidget()->y());
QPoint pos = mainWinPos + movePoint;
parentWidget()->move(pos);
m_StartPoint = curPoint; } } void CMyUpdateDlg::mousePressEvent(QMouseEvent * event) { //只能是鼠標左鍵移動和改變大小 if (event->button() == Qt::LeftButton) { m_bMousePress = true; } //按下時鼠標左鍵時,窗口在屏幕中的坐標 m_StartPoint = event->globalPos(); } void CMyUpdateDlg::mouseReleaseEvent(QMouseEvent * event) { m_bMousePress = false; }