Déplacer un rectangle (QGraphicsScen Qt)

Fermé
kaka1989 Messages postés 57 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 - 15 janv. 2011 à 19:00
kaka1989 Messages postés 57 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 - 16 janv. 2011 à 19:50
Bonjour,


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

5 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
16 janv. 2011 à 02:01
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 dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 5
16 janv. 2011 à 12:23
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
16 janv. 2011 à 14:46
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 dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 5
16 janv. 2011 à 14:57
vous pouvez donner un exemple SVL?????????
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
16 janv. 2011 à 15:31
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 dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 5
Modifié par kaka1989 le 16/01/2011 à 17:05
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
16 janv. 2011 à 17:56
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 dimanche 26 avril 2009 Statut Membre Dernière intervention 1 juillet 2012 5
16 janv. 2011 à 19:50
ok merci
0