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 进行处理。
判断是单击还是双击鼠标是由操作系统进行处理的。当用户在窗口上单击或双击鼠标时,操作系统会将这些事件发送给应用程序,应用程序再根据接收到的事件类型进行相应的处理。在这段代码中,只处理了鼠标双击事件,并通过信号将该事件的位置信息发送给其他模块进行处理。如果要处理鼠标单击事件,需要实现对应的函数并在该函数中进行相应的处理
不知道你这个问题是否已经解决, 如果还没有解决的话:可以同时对其他窗口进行操作的是非模态,及当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互
常规方法:
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