由于Linux下没有Windows的WinAPI,因此这段代码在Linux下可能需要完全重写。可以尝试使用Qt框架自带的事件处理函数来实现窗口移动,例如:
void MyWidget::mousePressEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
m_dragPos = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void MyWidget::mouseMoveEvent(QMouseEvent *event) {
if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - m_dragPos);
event->accept();
}
}
其中,m_dragPos是一个QPoint类型的变量,用于记录鼠标点击时相对于窗口左上角的偏移量。通过重写这两个函数,可以实现在Linux下拖动窗口移动整个窗口的效果。