演示及其理论
演示:
理论:首先获取父窗口下所有子窗口,然后拖动控件去检测,检测成功后使用画家类绘制辅助线。
1、拖动控件
拖动控件需要满足以下条件:鼠标点击处有控件,鼠标位置的偏移。
/////////////////////////////////////////////////
void MyPushButton::mousePressEvent(QMouseEvent *e)
{
if(e->button()==Qt::LeftButton){
QPoint mousePos = e->pos();
IsMousePress=true;
QWidget * scele = childAt(mousePos);//获取鼠标点击位置的控件
lastMousePos=e->globalPos();//获取全局位置
}
QWidget::mousePressEvent(e);
}
void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
if(e->button()==Qt::LeftButton){
IsMousePress=false;
}
QWidget::mouseReleaseEvent(e);
}
void MyPushButton::mouseMoveEvent(QMouseEvent *e)
{
if(IsMousePress&&你的控件!=null){
QPoint delta=e->globalPos()-lastMousePos;//鼠标位置差值,没有这个会让控件原点为鼠标坐标
你的控件