现在,我能够检测到何时仅单击一个按钮。但是我想检测一下两者是否同时按下。目的是从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);
}
谢谢。
最佳答案
QMouseEvent::buttons()函数返回鼠标按钮“或”状态的组合。
因此,要测试是否按下了左按钮,您应该这样做:-
if(mouseEv->buttons() & Qt::LeftButton)
并为右键:-
if(mouseEv->buttons() & Qt::RightButton)
正如Qt docs所述:-
因此,您可以跟踪按下和释放按钮的时间。