如何检测是否在Qt中同时按下了两个鼠标按钮
How to detect if both mouse buttons are pressed in Qt?
现在我可以检测何时只点击了一个按钮。但我想检测两者何时压在一起。其目的是从QTableView中选择一些项目。我试图以这样一种方式选择它们,即当左键点击一个项目,而右键已经被按下时,该项目将被选中。
下面的代码只显示单击了右按钮的消息,但没有显示同时单击了两个按钮。我该如何检测它们何时同时被点击?
bool MainWindow::eventFilter(QObject* obj, QEvent *ev)
{
if(obj = ui->listOfImages->viewport())
{
QMouseEvent * mouseEv = static_cast<QMouseEvent*>(ev);
if(mouseEv->buttons() == Qt::RightButton)
{
qDebug()<<"Right Button clicked!";
if(mouseEv->buttons() == Qt::LeftButton)
{
qDebug()<<"Both button clicked!";
return QObject::eventFilter(obj,ev);
}
}
}
return QObject::eventFilter(obj,ev);
}
谢谢。
尝试
if( (mouseEv->buttons() & Qt::RightButton) &&
(mouseEv->buttons() & Qt::LeftButton) )
{
...
}
提示:
当你刚刚检查buttons()等于Qt::RightButton时,它怎么会等于Qt:::LeftButton?
if(mouseEv->buttons() & Qt::LeftButton)
对于右侧按钮:-
if(mouseEv->buttons() & Qt::RightButton)
正如Qt文档所述:-
对于鼠标按下和双击事件,这包括导致事件的按钮。对于鼠标释放事件,这将排除导致该事件的按钮。
因此,您可以跟踪按下和释放按钮的时间。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 给定两个偶数,求出它们之间所有偶数的平方和
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- 如何在FLTK中使用两个不同的小部件使用键盘箭头和鼠标单击
- 如何检测是否在Qt中同时按下了两个鼠标按钮
- 用鼠标打开不同的 Url,单击两个不同的图像C++
- 使用原始输入同时获取两个鼠标的数据