en Qt, comment puis-je ignorer tous les événements de la souris et du clavier et d'arrêter plus tard les ignorer? C'est-à-dire que cliquez sur un bouton, ignorez tous les événements chez les enfants; Cliquez à nouveau, non ignorez. Est-ce clair?
J'ai les lignes suivantes, mais je fais peut-être quelque chose de mal:
4 Réponses :
Vous pouvez utiliser: Il désactive les événements de la souris et du clavier pour un widget. p> p>
Vous pouvez utiliser des filtres d'événements sur vos événements de souris et de clavier pour filtrer quelques keyPress ou Mouseclick lorsque vous en avez besoin:
bool YourFrm::eventFilter(QObject* pObject, QEvent* pEvent) { if (pEvent->type() == QEvent::KeyPress) { QKeyEvent* pKeyEvent = static_cast<QKeyEvent*>(pEvent); int PressedKey = pKeyEvent->key(); if(PressedKey == Qt::Key_Return) { // Filter Return key.... return true; } // standard event processing return QObject::eventFilter(pObject, pEvent); } else if (pEvent->type() == QEvent::MouseButtonPress) { QMouseEvent* pMouseEvent = static_cast<QMouseEvent*>(pEvent); ... // etc... } else { // standard event processing return QObject::eventFilter(pObject, pEvent); } }
Voulez-vous dire pour un qgraphicsitem?
Si oui, vous pouvez appeler p> et pour activer l'événement plus tard, car l'élément ne reçoit plus d'événements, vous devez passer par la scène, Parce que vous ne pouvez pas recevoir directement événement sur l'article.
Si votre problème n'utilise pas les frameworks graphiquesview, mais une autre partie de QT, c'est presque le même processus:
Vous pouvez appeler: P> QWidget::setEnabled(false) //like Massimo said
Ne pas utiliser SetFocuspolicy (QT :: Nofocus); et il propagera des événements au parent. Utilisez uniquement Setattribute (qt :: wa_transparentformousevents); p>
Yay! Cela a fonctionné pour mon QTableView que je voulais utiliser uniquement des contrôles de navigation du clavier.
Y a-t-il un moyen similaire d'ignorer les événements du clavier?
Remarque:
setattribute (qt :: wa_transparentformousevents); code> - rend le widget transparent pour les événements de la souris;
SetEnabled (FALSE); CODE> - Le widget ignore les événements de la souris et du clavier (mais les consommez silencieusement toujours, il apparaît).