Déplacer un rectangle (QGraphicsScen Qt)

kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,


SALUT je cherche a faire déplacer un rectangle sur une QGraphicsScene de Qt mais j'arrive pas le faire

5 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Je suppose que ton rectangle est un 'QGraphicsRectItem' qui dérive de 'QGraphicsItem' qui contient une méthode 'setPos' qui permet de positionner ton objet par rapport à la scène dans laquelle il aura été intégré (voir 'QGraphicsScene::addItem').
Voir la doc dans la partie 'The Graphics View Coordinate System'.
Bonne continuation.
2
kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
mais comment récupérer les coordonne d'un clique de souris sur une QGraphicsScene pour redessiné un rectangle avec les nouveaux coordonnée
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Il est nécessaire de créer une classe dérivée de 'QGraphicsScene' afin de pouvoir redéfinir la méthode virtuelle 'void QGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent)' qui sera donc appelée lors d'un clic de souris et te permettra alors de pouvoir connaître, entre autres, quel bouton a cliqué et à quelle position.
Bonne continuation.
0
kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
vous pouvez donner un exemple SVL?????????
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Bon c'est un peu compliqué et serait bien long à détailler. En fait il faur rédéfinir 3 fonctions virtuelles: mousePressEvent, mouseMoveEvent, mouseReleaseEvent qui vont te permettre de connaître quel objet de la scène est concerné par le clic dont la position est mémorisée, puis de combien il faut déplacer l'objet relativement au point mémorisé, puis d'arrêter de déplacer l'objet.
class Scene : public QGraphicsScene
{
  Q_OBJECT
  ...
  protected:
    virtual void mousePressEvent   (QGraphicsSceneMouseEvent* event);
    virtual void mouseMoveEvent    (QGraphicsSceneMouseEvent* event);
    virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent* event);
  ...
};

void Scene::mousePressEvent (QGraphicsSceneMouseEvent* event)
{
  if (event->button() == Qt::LeftButton)
  {
    QList<QGraphicsItem*> selectionItems = items (event->scenePos());
    // Tous les 'items' de la scène au point du clic sont retournés
    if (!selectionItems.isEmpty())
    {
      // Alors il faut conserver la trace du premier élément qui est celui
      // du dessus, afin de pouvoir l'utiliser lors du 'move'
      ...
      event->accept();
    }
  }
}
Bonne continuation.
0
kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
est ce que je peu avoir plus de détail SVP????????? parce que j'ai une classe MainWindow qui contient une QGraphicsScene sur qui je dessine est je veut déplacer un rectangle ou une Ellipse ou un ligne après sans insertion sur la QGraphicsScene ???
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Désolé mais c'est beaucoup trop long à expliquer. Par contre la documentation de Qt est bien faîte et tu pourras y trouver un exemple simple que tu vas facilement comprendre; il s'agit de 'Drag and Drop Robot Example'.
Pour y accéder, tu as deux solutions:
- soit par Qt4 Demo,
- soit par l'aide en tapant simplement 'Robot' dans l'index de recherche.
Bonne recherche.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kaka1989 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
ok merci
0