这是我的代码,我试图捕获鼠标输入,除非我按住鼠标左键,否则该输入将不起作用。键盘输入效果很好。
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。
答案 0 :(得分:1)
您需要为鼠标实际所在的窗口小部件启用鼠标跟踪。看来您有子小部件。这些子小部件需要启用鼠标跟踪,以便将鼠标移动事件传播到其父级。
您只需拨打一次setMouseTracking(true);
。当鼠标进入/离开时,您无需启用/禁用鼠标跟踪。这意味着您不需要enterEvent()
和leaveEvent()
处理程序。