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

标签 c++ qt

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

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

非常感谢,

最佳答案

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

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

关于c++ - 如何检查小部件上是否发生了鼠标释放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097733/

相关文章:

python - PyCharm 关闭后仍然显示正在运行的脚本

java - 在qt中执行java文件

C++ Eigen 库 : Cast for fixed sized Matrices

c++ - 如何使用 POCO 库将 C++ 对象传输到 Web 服务

qt - 根据平台更改 Qt 对话框的大小

c++ - QtConcurrent::map 和指针列表

c++ - 如何枚举所有进程及其关系窗口标题和进程名称

c++ - Qt 图像中的可点击区域?

c++ - QSS QTabBar 文本对齐不起作用

qt - 如何更改 QListWidget 中项目的文本颜色?