Details
-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
5.7.0
-
None
-
Win8.1, MSVC2013
Description
If you store a QKeyEvent just as QInputEvent, which is possible because QKeyEvent inherit from QInputEvent, modifiers are broken, because modifier method is not virtual.
Example (pressing left control modifier)
#include <QApplication> #include <QDebug> #include <QKeyEvent> #include <QMainWindow> class TestWindow : public QMainWindow { protected: void keyPressEvent(QKeyEvent* event) override { QInputEvent* inputEvent = event; //returns true qDebug() << event->modifiers().testFlag(Qt::ControlModifier); //returns false qDebug() << inputEvent->modifiers().testFlag(Qt::ControlModifier); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); TestWindow w; w.show(); return a.exec(); }