Comment désactiver la fonctionnalité de défilement lors d’un événement de roue QGraphicsView Qt C ++

J’ai une vue graphique et j’ai défini ma propre fonction de défilement à la main lorsque l’utilisateur appuie sur le contrôle et clique avec la souris.

J’ai supprimé les barres de défilement, mais la molette de la souris continue de défiler et même de faire défiler l’image affichée dans qGraphicsView affichant un espace vide (blanc), ce que ma main ne fait pas glisser.

Comment puis-je faire en sorte que la roue tout droit ne fasse rien du tout?

Je sais qu’il existe une fonction que je peux simplement insérer dans mon code sans classe dérivée, car je l’avais déjà posée auparavant et que j’avais la bonne réponse, mais la réponse a été supprimée et je n’avais pas enregistré le code 🙁

Le code ci-dessous ne fait rien même près de la fonctionnalité attendue, au démarrage, je reçois la souris qui fait toujours quelque chose, puis tous les clics et événements de la roue affichent tout simplement ce deuxième message … alors oui, ça ne marche pas

 bool GUI::eventFilter(QObject *object, QEvent *event) { if (object == ui->graphicsView && event->type() == QEvent::GraphicsSceneWheel) { std::cout << "Wheel Blocked"; return true; } std::cout << "Mouse Wheel still doing something"; return false; } 

puis ce code pour installer le filtre

 ui->graphicsView->installEventFilter(this); 

Installer un filtre d’ événement et un filtre pour

 QEvent::GraphicsSceneWheel 

Créez quelque chose comme ça dans votre application

 bool MainWindow::eventFilter(QObject *object, QEvent *event) { if (object == ui->graphicsView->viewport() && event->type() == QEvent::Wheel) { qDebug() << "SCroll"; return true; } return false; } 

et installez sur votre widget.

 yourwidget->viewport()->installEventFilter(this); 

Edit: Je pensais que cela devrait fonctionner avec QEvent :: GraphicsSceneWheel. Si quelqu'un sait pourquoi travaille avec Wheel, veuillez expliquer

De plus, vous pouvez modifier QGraphicsView en utilisant l’inheritance.

 class MyCustomGraphicsView : public QGraphicsView { virtual void wheelEvent ( QWheelEvent * event ) { //here you can modify wheel-event } } 

C’est un moyen simple, car qt-designer peut associer un élément GraphicsView de votre formulaire à votre classe héritée.