Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查小部件上是否发生了鼠标释放事件_C++_Qt - Fatal编程技术网

C++ 如何检查小部件上是否发生了鼠标释放事件

C++ 如何检查小部件上是否发生了鼠标释放事件,c++,qt,C++,Qt,我试图在一个小部件中捕获鼠标释放事件,以确保之前在同一个小部件中按下鼠标。mouseReleaseEvent已成功调用,但我不知道如何使用参数QMouseEvent来检查鼠标位置是否在小部件中。我当前的代码: void DeviceWidget::mouseReleaseEvent(QMouseEvent* e) { if (_mouseClick) { _mouseClick = false; emit mouseClick(_deviceInf

我试图在一个小部件中捕获鼠标释放事件,以确保之前在同一个小部件中按下鼠标。mouseReleaseEvent已成功调用,但我不知道如何使用参数QMouseEvent来检查鼠标位置是否在小部件中。我当前的代码:

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (_mouseClick)
    {
        _mouseClick = false;
        emit mouseClick(_deviceInformation);
    }
}

非常感谢,

您需要检查鼠标释放事件的本地位置是否在您的小部件中。我认为没有理由使用
\u mouseClick
成员变量。仅当鼠标按下此小部件时,才会调用此方法。当您按下按钮时,小部件开始跟踪鼠标,它将接收释放事件-无论鼠标在何处释放

void DeviceWidget::mouseReleaseEvent(QMouseEvent* e)
{
    if (rect().contains(e->localPos()->toPoint()) {
        emit mouseClick(_deviceInformation);
    }
}

仅当释放小部件时鼠标位于小部件上时,才应触发此事件。检查它是多余的。不是,即使我在另一个地方(如桌面)释放鼠标,它也会被触发。请看一看释放事件报告给发生press事件的同一个小部件。你不应该对此做什么特别的事。释放时的实际指针位置无关。