2013-06-06 3 views
2

Je travaille sur un jeu de plateau et j'essaye de rendre les QWidgets (Rectangles) sélectionnables. J'ai donc un BoardView (hérité de QWidget) qui contient BuildingViews, PlantationViews (tous deux hérités de QWidget). Tout cela apparaît sur la fenêtre, mais ce n'est pas cliquable. Comment puis-je rendre ceci cliquable?make QWidget personnalisé sélectionnable

+0

Essayez-vous de déplacer ces widgets avec votre souris? Vous pouvez remplacer les événements de la souris pour déplacer les widgets, mais je vais devoir demander, pourquoi utilisez-vous 'QWidget's au lieu de' QGraphicsItem's? – thuga

+0

Mon professeur a dit que QWidgets était celui à utiliser. Je ne vais pas passer à QGraphicsItems. Je ne veux pas déplacer ces widgets, juste les sélectionner. – user2459549

+0

Tous les QWidgets sont cliquables. Je pense que votre question est mal formulée. Qu'avez-vous essayé et qu'est-ce que vous voulez? – RobbieE

Répondre

2

Vous pouvez essayer de faire une mise en œuvre de QMouseEvent où l'ID widget est transmis, quelque chose comme ceci:

Dans la mise en œuvre de votre widget (par exemple YourWidget.cpp):

YourWidget::MouseReleaseEvent(QMouseEvent *event) 
{ 
    emit clickedWithMouse(this); // this is a signal, declared in YourWidget.h 
} 

Dans le fichier de jeu "principal" (par exemple Game.cpp):

Game::onButtonClicked(YourWidget* widget) // this is a public slot, you must connect all YourWidgets's clickedWithMouse signals to this slot (in Game object code, e.g. when initialising the board) 
{ 
    lastWidget = widget; //save the widget "ID" (lastWidget is a member of class Game) 
    someFunction(widget); //do something with the widget (if you wish) 
} 
+0

Merci, cela aide! – user2459549