QT setMouseTracking(true)完全无效

时间:2019-06-15 06:40:41

标签: c++ qt

这是我的代码,我试图捕获鼠标输入,除非我按住鼠标左键,否则该输入将不起作用。键盘输入效果很好。

  QWidget *window = new QWidget();
  QHBoxLayout *hl = new QHBoxLayout();
  QVBoxLayout *vl = new QVBoxLayout();
  main = new input_browser_main();
  main->setFixedWidth(640);
  main->setFixedHeight(480);

  hl->addWidget(vncmain);
  vl->addLayout(hl);
  QWidget* centralWidget = new QWidget();
  centralWidget->setLayout (layout);
  centralWidget->setFixedHeight(100);
  vl->addWidget(centralWidget);
  window->setLayout(vl);

  this->setCentralWidget(window);
}

由于某些原因无法捕获鼠标移动?我正在调用setMouseTracking,但没有收到任何数据。我对QT和C ++还是比较陌生,并且正在开发此应用程序以响应客户端要求的UI。因此,我想要实现的目标是仅在Widget内部获得鼠标x,y。

1 个答案:

答案 0 :(得分:1)

您需要为鼠标实际所在的窗口小部件启用鼠标跟踪。看来您有子小部件。这些子小部件需要启用鼠标跟踪,以便将鼠标移动事件传播到其父级。

您只需拨打一次setMouseTracking(true);。当鼠标进入/离开时,您无需启用/禁用鼠标跟踪。这意味着您不需要enterEvent()leaveEvent()处理程序。