QT / c ++如何检查globaly是鼠标按下还是释放?

时间:2017-07-13 17:16:51

标签: c++ qt events mouse

void MainWindow::mousePressEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
      timer->start(timer_time);
    }
}

void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
        timer->stop();
    }
}

当我在我的appliacation中使用它时,此代码有效,但如果我想在外面使用它将无法正常工作。我怎样才能做到这一点? 它应该在按下LeftButton时启动计时器,在LeftButton释放时停止。

解决方案: understanding-the-low-level-mouse-and-keyboard-hook-win32

1 个答案:

答案 0 :(得分:1)

听起来hooks是你正在寻找的东西。

基本上,钩子可以让你与系统中的活动进行交互,并可以改变它的行为。

代码中的事件侦听器只会捕获操作系统委派给QT应用程序的鼠标事件。这就是为什么您的代码仅在您在应用程序中使用时才有效。使用钩子,您可以在系统级别拦截鼠标事件,并让它们在您的应用程序中处理它们,而不是让操作系统决定应该在哪里处理它们。

Here用于设置它们的内容,here是有关实施细节的一点指南。