现在我能够检测到何时只点击了一个按钮.但我想检测两者何时被压在一起.目的是从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);
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
小智 7
尝试
if( (mouseEv->buttons() & Qt::RightButton) &&
(mouseEv->buttons() & Qt::LeftButton) )
{
...
}
Run Code Online (Sandbox Code Playgroud)
暗示:
当你刚检查按钮()等于Qt :: RightButton时,它怎么能等于Qt :: LeftButton?
QMouseEvent :: buttons()函数返回鼠标按钮的OR状态组合.因此,要测试按下左键,你应该这样做: -
if(mouseEv->buttons() & Qt::LeftButton)
Run Code Online (Sandbox Code Playgroud)
并为正确的按钮: -
if(mouseEv->buttons() & Qt::RightButton)
Run Code Online (Sandbox Code Playgroud)
正如Qt文档所述: -
对于鼠标按下和双击事件,这包括导致事件的按钮.对于鼠标释放事件,这将排除导致事件的按钮.
因此,您可以跟踪按钮按下和释放的时间.
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |