J'ai ma propre classe basée sur QWidget. J'ai mis ce widget dans QMainWindow et j'ai besoin d'un clic de souris sur ce widget.
J'ai essayé:
connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));
Mais rien ne se passe. Comment puis-je le faire?
QWidget n'a pas de signal clicked () et QMainWindow n'a pas de slot exit (). Il est impossible de se connecter à un signal inexistant et à un emplacement inexistant. La valeur de retour de la connexion doit être true si la connexion réussit. Vérifiez cette valeur lorsque vous établissez des connexions pour vous assurer que votre code fonctionnera correctement.
Pour quitter votre application, vous devez appeler qApp->quit()
De plus, comme cela a été mentionné par d'autres, vous devrez installer un eventFilter ou réimplémenter le
void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]
ou
void QWidget::mouseReleaseEvent ( QMouseEvent * event ) [virtual protected]
méthodes.
Il y a beaucoup d'exemples dans la documentation officielle de Qt, this par exemple réimplémente la méthode mousePressEvent(QMouseEvent *event)
.
Pour l'option eventFilter, voir this petit exemple.
J'espère que cela t'aides.
Un QWidget
n'a pas de signal clicked
. Pour que cela fonctionne, utilisez des événements. Tous les widgets prennent en charge les événements, il y a donc du travail manuel à faire, mais pas beaucoup:
event
de votre widget (que vous dérivez de QWidget
QEvent:: MouseButtonPress
Vous pouvez également ajouter une méthode eventFilter
.
Google les classes et méthodes que j'ai mentionnées pour les exemples de code et pour arriver à une solution complète en fonction de vos besoins exacts.