Seite 1 von 1

Maus "einfangen"

Verfasst: 25. April 2008 08:50
von PeterLustig
Ich möchte das der Benutzer einen Ausschnitt eines Pixmaps auswählen kann. Dies realisiere ich momentan dadurch, dass ich ein Klasse erstelle die von QWidget ableitet. Im paintEvent wird das Pixmap gemalt. Zusätzlich habe ich, wie in der Beschreibung auch, QRubberBand eingebunden.

Nun kann man aber leider mehr auswählen, als Bild da ist. Wie kann ich also die Maus in einem bestimmten Gebiet "einfangen", sodass sie sich (während die Maus gedrückt ist) nicht da raus bewegen kann? Bietet Qt etwas derartiges?


MfG, Peter :)

Verfasst: 25. April 2008 09:04
von upsala
Sowas macht man nicht. Man begrent den Rahmen auf eine maximale Größe aber fängt die Maus nicht irgendwo ein.

Verfasst: 25. April 2008 09:34
von PeterLustig
Stimmt, darauf bin ich garnicht gekommen. Danke. :D


Edit:
Irgendwie hab ich Denkblockade oder so, wie ich das am besten Begrenze...
Momentan hab ich dies:

Code: Alles auswählen

  QRect selection = QRect(origin, event->pos()).normalized();

  if (selection.left() < 0) selection.setLeft(0);
  if (selection.top() < 0) selection.setTop(0);
  if (selection.right()+selection.left() > pixmap.width()-1)
    selection.setRight(pixmap.width()-selection.left()-1);
  if (selection.bottom()+selection.top() > pixmap.height()-1)
    selection.setBottom(pixmap.height()-selection.top()-1);
Klappt "meistens" auch ganz gut, allerdings manchmal tauchen da doch Minuswerte in der Höhe oder Breite auf. :s