Maus "einfangen"

Alles rund um die Programmierung mit Qt
Antworten
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Maus "einfangen"

Beitrag 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 :)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Sowas macht man nicht. Man begrent den Rahmen auf eine maximale Größe aber fängt die Maus nicht irgendwo ein.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag 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
Antworten