找回密码
 立即注册
收起左侧

mouseMoveEvent和mouseReleaseEvent同时触发时release事件不触发

0
回复
5869
查看
[复制链接]
累计签到:8 天
连续签到:1 天
来源: 2015-8-12 17:05:56 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这里是在鼠标按下时开始对图片进行拖动,松开时结束,但是现在有时候在鼠标move时release鼠标,不会响应release事件
QT知识有限,求大神解答。

代码如下:

void ViewBrowser::mousePressEvent(QMouseEvent *event){
    bIsmouseMove=true;
    HTuple IsImage;
    HTuple IsZoomImage;
    CountObj(ho_ImageZoom,&IsZoomImage);
    CountObj(img,&IsImage);
    if(IsImage<1)
    {
        QMessageBox::warning(NULL,"Warning","No Image",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
        bIsmouseMove=false;
        return;
    }
    mPX=0;
    mPY=0;
    if (event->button()==Qt:eftButton)
    {
        MousePressPoint = event->pos();
        mSX=MousePressPoint.x();
        mSY=MousePressPoint.y();
    }

}
void ViewBrowser::mouseMoveEvent(QMouseEvent *event){
   
    HTuple IsZoomImage;
    CountObj(ho_ImageZoom,&IsZoomImage);

    MousePoint=event->pos();
    this->setMouseTracking(true);
    mX=MousePoint.x();
    mY=MousePoint.y();
   
    if (bIsmouseMove==true)
    {   

        if (mPX==0&&mPY==0)
        {
            disX=mSX-mX;
            disY=mSY-mY;
        }
        else
        {
            disX=mPX-mX;
            disY=mPY-mY;
        }
        
            f2=disX;
            f2=f1+f2;
            f1=f2;
   
            g2=disY;
            g2=g1+g2;
            g1=g2;
   
            s1=f1;
            t1=g1;
            if(IsZoomImage<1)
            {
                CloseWindow(hv_windowID);
                OpenWindow(0,0,wid,hei,winID,"","",&hv_windowID);
                SetPart(hv_windowID, g2, f2,hei-1+g2,wid-1+f2);
                DispImage(img,hv_windowID);
            }
            else
            {
                CloseWindow(hv_windowID);
                CloseWindow(hv_windowID2);
                OpenWindow(0,0,wid,hei,winID,"","",&hv_windowID2);
                SetPart(hv_windowID2, g2, f2,hei-1+g2,wid-1+f2);
                DispImage(ho_ImageZoom,hv_windowID2);
            }
            mPX=MousePoint.x();
            mPY=MousePoint.y();
        }
}
void ViewBrowser::mouseReleaseEvent(QMouseEvent *event){
   
    bIsmouseMove=false;
    meX=event->x();
    meY=event->y();
   
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了