• 4913阅读
  • 3回复

[提问]关于鼠标双击问题 [复制链接]

上一主题 下一主题
离线pan356
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-10
— 本帖被 XChinux 从 C/C++基础 移动到本区(2011-05-10) —
写了一个小程序,可实现双击鼠标后显示同一张图片
问题
1.其中设置了双击的有效区域,但好像没有什么效果,随便在哪个位置双击都可以
2.其中设置了鼠标左键有效,但双击右键时同样有效
请教是哪里出了问题,改怎么修改!谢谢!
部分代码如下:
void mainForm::mousePressEvent(QMouseEvent *e)
{
    int px = myPixmapLabel->x();      //myPixmapLabel为一开始显示图片的QLabel
    int py = myPixmapLabel->y();
    int pw=myPixmapLabel->width();
    int ph=myPixmapLabel->height();
    if (e->button()==Qt::LeftButton)
    {
        int ex=e->x();
        int ey=e->y();
      if (ex>px&&ex<pw &&ey>py&& ey<ph)   //设置鼠标点击有效的区域
       {   timer->start(100);//开始计时
        return;}
      return;}        
}
void mainForm::mouseDoubleClickEvent(QMouseEvent *e)
{
    timer->stop();//禁止单击要做的事
    QMessageBox::about( this, "Qt Mouse Click Event Example","Double click");
    label->setPixmap( QPixmap(path));
    label->setScaledContents( TRUE );
}
离线cutemmll
只看该作者 1楼 发表于: 2011-05-10
其实不用这么复杂,如果你只是为了实现双击某个区域才显示图片,下面的代码就可以解决你的问题:

  1. void MainWindow::mouseDoubleClickEvent(QMouseEvent *e)
  2. {
  3.     //标识有效的区域为从(0,0)点开始,长宽都为100像素的区域
  4.     QRect effectRect(0,0,100,100);
  5.     if(effectRect.contains(e->pos())&&//检测当前鼠标的位置是否在有效区域内
  6.        e->button() == Qt::LeftButton) //确认是否是鼠标左键
  7.     {
  8.         //show pixmap ;
  9.     }
  10. }



上面的代码限定有效区域为 (0,0,100,100)
c------------enjoy qt & enjoy life-----------++
离线pan356
只看该作者 2楼 发表于: 2011-05-11
真的可以咦,非常感谢cutemmll !
离线pan356
只看该作者 3楼 发表于: 2011-05-11
连QTimer都省了
快速回复
限100 字节
 
上一个 下一个