很长一段时间没有用Qt了,今天又用到了这个知识点,虽然很简单但也做个记录吧。能理解原理就很简单了和MFC差不多。
需要重写窗体的三个函数,分别是:鼠标按钮按下,鼠标移动,鼠标按钮释放
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
函数体为
void testWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)//判断左键是否按下
{
m_bPressed = true;
m_point = event->pos();
}
}
void testWidget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event);
m_bPressed = false;
}
void testWidget::mouseMoveEvent(QMouseEvent *event)
{
if (m_bPressed)
move(event->pos() - m_point + pos());//移动当前窗口
}
除了重写这三个函数外,窗体类还需要定义两个变量,m_bPressed(bool),m_point(QPoint),分别用于存储鼠标左键按下的状态以及按下左键时点击的位置。