Qt 版本 4.8.1 ,主要是为了解决 embeded Qt 下,子窗口的拖动问题。

void MyInputPanel::mousePressEvent(QMouseEvent *mouseEvent)
{
    if(mouseEvent->button() == Qt::LeftButton) 
    {
        //move 用的是 globalPos, 所以,需要要取出本窗口的(0,0)对应的全局坐标
        //pos()返回的是父窗口中位置,不能直接用
        startPos = mouseEvent->globalPos() - mapToGlobal(QPoint(0,0));

        keyMovePressed = true;
    }

    mouseEvent->accept();
}

void MyInputPanel::mouseMoveEvent(QMouseEvent *mouseEvent)
{
    if (keyMovePressed)
    {
        move(mouseEvent->globalPos() - startPos);
    }

    mouseEvent->accept();
}

void MyInputPanel::mouseReleaseEvent(QMouseEvent *mouseEvent)
{
    keyMovePressed = false;

    mouseEvent->accept();
}
    

 

相关文章:

  • 2021-05-28
  • 2021-07-07
  • 2021-12-07
  • 2022-12-23
  • 2022-03-03
  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
猜你喜欢
  • 2021-10-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-09-15
  • 2022-12-23
相关资源
相似解决方案