3
我正在写一个从3个鼠标获取输入的应用程序。 2个鼠标用于手势,它们的输入分开处理,第3个应该正常运行。 我已成功安装了运行我自己的鼠标处理代码(processMouse())的eventfilter(见下文)。有选择地忽略Qt中的鼠标事件
但是,当试图让过滤器忽略来自某些鼠标的事件(由布尔返回值processMouse())确定时,不会有任何事情被忽略。
我试过使用正常的真/假返回值,将事件重置为“无”事件,调用它的忽略功能,但即使我告诉它忽略事件,鼠标仍然保持移动。
bool MainWindow::eventFilter(QObject *obj, QEvent *event){
if ((event->type() == QEvent::MouseMove) ||
(event->type() == QEvent::MouseButtonPress)){
if (configured){
if (!processMouse()){
//event->ignore();
//event = new QEvent(QEvent::None);
}
}
return true;
}
return false;
}
我怎样才能选择性忽略来自eventfilter的MouseMove事件?
鼠标移动不由Qt处理,它由窗口管理器处理。 mouseMove事件只是从窗口管理器到Qt的一个信号,你不能从你的应用程序中取消它(不知道你的窗口管理器和环境有很多) – Mat 2011-12-17 15:14:10
将事件分配给事件并不会改变原始事件它的处理)。它只是改变你的本地指针变量的值,现在指向新创建的事件(它将会丢失),而不是实际处理的事件。该分配对于您的方法是本地的,它不会在其他地方被注意到。 – 2011-12-17 15:25:04
感谢您的澄清,我现在试图通过使用我的processMouse函数的返回值来确定光标的位置是否应该设置回来。它可能不会像绘制和实现一个新的一样漂亮,但它应该适用于我的目的。 – Energya 2011-12-18 02:03:46