C++ Qt如何检查按下了哪个鼠标按钮

C++ Qt如何检查按下了哪个鼠标按钮,c++,qt,pyqt,pyside,C++,Qt,Pyqt,Pyside,我在PySide中遇到问题,试图确定在事件函数中按下了哪个鼠标按钮。我特别需要它来忽略鼠标移动事件,因为它在左右两个鼠标按钮上都起作用 如果按下场景中的右键,我想忽略鼠标移动事件。有什么帮助吗?您可以通过Qt::RightButton检查按下了哪个鼠标按钮。对不起C++代码,但我希望你无论如何都能理解: void mousePressEvent(QMouseEvent *event) { if (event->button()==Qt::RightButton){

我在PySide中遇到问题,试图确定在事件函数中按下了哪个鼠标按钮。我特别需要它来忽略鼠标移动事件,因为它在左右两个鼠标按钮上都起作用


如果按下场景中的右键,我想忽略鼠标移动事件。有什么帮助吗?

您可以通过
Qt::RightButton
检查按下了哪个鼠标按钮。对不起C++代码,但我希望你无论如何都能理解:

void mousePressEvent(QMouseEvent *event)
{ 
    if (event->button()==Qt::RightButton){
        qDebug() << "right button is pressed
    }
}
void mousePressEvent(QMouseEvent*event)
{ 
如果(事件->按钮()==Qt::RightButton){

qDebug()您可以使用布尔值:

void mousePressEvent(QMouseEvent *event)
{ 
if (event->button()==Qt::RightButton){
    qDebug() << "right button is pressed
    pressed=true; //<-----
}
}
void mousePressEvent(QMouseEvent*event)
{ 
如果(事件->按钮()==Qt::RightButton){

qDebug()所有鼠标事件都有两种方法(
按钮
按钮
)来确定按下了哪些按钮。但仅对于
移动
事件,文档说明:

请注意,对于鼠标移动事件,返回的值始终为Qt::NoButton

对于
mouseMoveEvent
您应该使用
按钮
方法

void mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() == Qt::RightButton)
        qDebug() << "Only right button";
}
void mouseMoveEvent(QMouseEvent*e)
{
如果(e->buttons()==Qt::RightButton)

qDebug()
QApplication::mouseButtons()
将返回
mouseButton
的状态,
因此,您可以在
KeyPressEvent

中获取鼠标的状态,为您的订婚投票,但我已经尝试过了,虽然它可以在鼠标按下和鼠标释放时工作,但在鼠标移动事件中不起作用。这对我不起作用。小部件接收
QContextMenuEvent
而不是
QMouseEvent
,无论我做什么-e即使我没有菜单,并且尝试使用
setContextMenuPolicy
也不会改变任何事情。你必须使用mouseMoveEvents上的
.buttons()
(注意“s”)作为
.button()
将始终为此事件返回Qt::NoButton。+1表示尝试,但这不是我需要的。我不会为此使用布尔值,当用户使用鼠标笨拙时风险太大……我注意到Qt在鼠标事件处理方面不是最好的。我确信有内置方法用于此目的。这似乎无法正常工作,仅此而已例如,如果语句读为:
if(event->buttons()==Qt::LeftButton)
而不是
button(),则y似乎会拾取鼠标按钮这是我需要的。非常感谢。如果你能帮助我过滤鼠标,我会为EVENTROST打开新的问题。亚历克斯欢迎你,我会尽快看到你的关于<代码> EnvivsIs/COD>的问题,但是我能提供你C++代码。
void mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() == Qt::RightButton)
        qDebug() << "Only right button";
}