窗口是怎么判断是单击还是双击鼠标


void QWGraphicsView::mouseDoubleClicked(QMouseEvent* event)
{
    if (event->button() == Qt::LeftButton)
    {
        QPoint point = event->pos();
        emit mouseDoubleClicked(point);
    }
    QGraphicsView::mouseDoubleClickEvent(event);
}
大佬们,这个是鼠标双击事件,窗口是怎么判断是单击还是双击鼠标,QGraphicsView::mouseDoubleClickEvent(event);这句话的意思又是什么,QGraphicsView不是没有点击事件吗

该回答引用chatgpt:
这段代码实现了一个鼠标双击事件的处理函数。当用户在 QWGraphicsView 窗口上双击鼠标左键时,会触发该函数。函数中的 if 语句判断是否为鼠标左键触发的双击事件,如果是,则获取该鼠标事件的位置,并通过信号 mouseDoubleClicked 将该位置信息发送出去。

QGraphicsView::mouseDoubleClickEvent(event) 是调用了 QGraphicsView 的父类 QWidget 中的 mouseDoubleClickEvent() 函数,这个函数会将该鼠标事件传递给窗口的父组件进行处理。这里的意思是,先调用子类 QGraphicsView 中的双击事件处理函数,然后再将事件传递给父类 QWidget 进行处理。

判断是单击还是双击鼠标是由操作系统进行处理的。当用户在窗口上单击或双击鼠标时,操作系统会将这些事件发送给应用程序,应用程序再根据接收到的事件类型进行相应的处理。在这段代码中,只处理了鼠标双击事件,并通过信号将该事件的位置信息发送给其他模块进行处理。如果要处理鼠标单击事件,需要实现对应的函数并在该函数中进行相应的处理

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7519004
  • 这篇博客也不错, 你可以看下无边框透明窗口设置鼠标穿透与不穿透功能
  • 除此之外, 这篇博客: 模态与非模态窗口简单总结中的 非模态 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    可以同时对其他窗口进行操作的是非模态,及当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互
    常规方法:
    QDialog * dlg = new QDialog()
    dlg->show();
    当然,这儿用指针(即分配到heap中)不是必须的。 (有疑问?或者有时发现窗口一闪而过?那么你需要了解C、C++中变量的作用域和生存周期)

    想让一个Widget成为模态,我们只需要对其设置:
    setAttribute(Qt::WA_ShowModal, true);
    注意:这是QWidget的成员函数 ,也就是说,QWidget可以显示为模态或非模态!

    https://blog.csdn.net/dbzhang800/article/details/6300416

  • 您还可以看一下 乌云毕力格老师的网络工程师初级教程课程中的 路由器端口及硬件组成小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

简单说,widget界面都有mouseevent的配置,mouseevent中自然有doubleclick