我有一个在QMainWindow中的顶部的QGraphicsView内QGraphicScene Qt的程序。 该事件通过使用eventFilter功能的QMainWindow处理。 函数体类似于这样的代码:
bool Window::eventFilter(QObject *, QEvent *event) {
QEvent::Type type = event->type();
if (type == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
switch(keyEvent->key()) {
case Qt::Key_A:
case Qt::Key_B:
case Qt::Key_C:
case Qt::Key_D:
// call a function that uses the current mouse position on the graphics scene
break;
default:
QLocale loc = QApplication::keyboardInputLocale();
if(loc.language() != QLocale::English) {
QString message = "A non-English key was pressed";
showMessage(message, QMessageBox::Warning);
}
}
return true;
}
return false;
}
我最近添加的“默认”部分,自那时以来都在A,B,C,d的情况下使用的坐标是完全错误的。 另外,如果我在函数的任何位置添加一个简单的cout打印错误消失,正确的鼠标坐标使用。
什么都不可能导致此?