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