1、在头文件,声明几个变量,以及要重写的几个函数:
protected:
virtual void mousePressEvent(QMouseEvent *event)override;
virtual void mouseMoveEvent(QMouseEvent *event)override;
virtual void mouseReleaseEvent(QMouseEvent *event)override;
private:
bool m_bDrag;
QPoint m_mouseStartPoint;
2、重新实现几个虚函数:
(1)void XX::mousePressEvent(QMouseEvent * event)
void XX::mousePressEvent(QMouseEvent * event)
{
int oldWidth = this->width();
if (event->pos().x() > oldWidth - 10 && event->button() == Qt::LeftButton)
{
m_bDrag = true;
m_mouseStartPoint = event->pos();
}
}
(2)void XX::mouseMoveEvent(QMouseEvent *event)
void XX::mouseMoveEvent(QMouseEvent *event)
{
int oldWidth = this->width();
if (event->pos().x() > oldWidth - 10 )
setCursor(Qt::SplitHCursor);
if (m_bDrag)
{
setCursor(Qt::SplitHCursor);
int width = oldWidth - (oldWidth - event->pos().x());
//获得鼠标移动的距离
QPoint distance = event->globalPos() - m_mouseStartPoint;
setFixedWidth(width);
}
}
(3)void XX::mouseReleaseEvent(QMouseEvent *event)
void XX::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_bDrag = false;
this->setCursor(Qt::ArrowCursor);
}
}