//last 和pos0是myForm的私有变量
//mainFrame是你要让他有拖动效果的组件
void myForm::mouseMoveEvent(QMouseEvent *e)
{
    //处理整个范围内的事件,可以自己更改范围
    QPoint temp = e->pos();
    const int pos_min_x = ui.mainFrame->pos().x();
    const int pos_max_x = pos_min_x + ui.mainFrame->width();
    const int pos_min_y = ui.mainFrame->pos().y();
    const int pos_max_y = pos_min_y + ui.mainFrame->height();
    if( (temp.x() > pos_min_x) && (temp.x() < pos_max_x) &&
        (temp.y() > pos_min_y) && (temp.y() < pos_max_y))
    {
        QPoint newpos = e->globalPos();
        QPoint upleft = pos0 + newpos - last; 
        this->move(upleft);
    }
}
void myForm::mousePressEvent(QMouseEvent *e)
{
    QPoint temp = e->pos();
    const int pos_min_x = ui.mainFrame->pos().x();
    const int pos_max_x = pos_min_x + ui.mainFrame->width();
    const int pos_min_y = ui.mainFrame->pos().y();
    const int pos_max_y = pos_min_y + ui.mainFrame->height();
    if( (temp.x() > pos_min_x) && (temp.x() < pos_max_x) &&
        (temp.y() > pos_min_y) && (temp.y() < pos_max_y))
    {
        last = e->globalPos();
        pos0 = e->globalPos() -e->pos();
    }
}