在使用Qt开发界面时往往会涉及使用鼠标拖动窗体,鼠标可以直接按住窗体边框拖动,当鼠标按住窗体内部拖动时就需要重写鼠标事件。
重写鼠标事件来移动窗体的思路有两种
第一种:移动位置=(鼠标移动位置)-(鼠标相对于窗体左上角的位置)
//鼠标按下事件
void MainWindow::mousePressEvent(QMouseEvent *event)
{
dragPosition=event->globalPos()-frameGeometry().topLeft();
}
//鼠标移动事件
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
move(event->globalPos()-dragPosition);
}
dragPosition为QPoint变量,保存鼠标相对于窗体左上角的位置,它由鼠标相对于屏幕(黑色边框)的全局位置globalPos()减去窗体(红色边框)相对于屏幕的左上角位置topLeft()(