Geometrische Objekte werden generiert, aber nicht angezeigt.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 11:07

Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Samstag 19. Januar 2019, 20:43

Wenn `path` ein `QPainterPath`-Objekt und `scene` ein `QGraphicsScene`-Objekt ist, schreibt man das dann so:

Code: Alles auswählen

scene.setSelectionArea(path)
selected = scene.selectedItems()
Es wäre toll, wenn `selected` dann eine Liste mit den noch sichtbaren Objekten enthält. Ist das der Fall?

Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 20:46

Ich wuerde eher mit der zweiten Option operieren, die Selektion ist sicher moeglich, aber mir persoenlich zu viel Seiteneffekt - die Selektion hat ja ggf. auch noch andere Einsatzzwecke.

Und hast du das mal probiert? Du hast doch inzwischen ausreichend viel Code, um damit mal rumzuspielen.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Samstag 19. Januar 2019, 21:31

Also eher so:

Code: Alles auswählen

scene.setSelectionArea(path)
selected = scene.items()
Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 21:55

Hast du dir die items-calls mal angeschaut? Das sind jede Menge. Mit Argumenten für eine Zone (als rect oder Pfad und so)

Also präzise wonach du gefragt hast.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 20. Januar 2019, 21:15

@__deets__: Die C++-Codeschnipsel der Methodenaufrufe sind für mich wenig verständlich.
  1. Was meinst du mit "items-calls"?
  2. Was ist eine Zone bei Qt?
Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 21:17

Alle die Aufrufe die items heissen. Und verschiedene Argumente akzeptieren, um die items die in einer bestimmten Zone oder Region sind. Das willst du doch.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 20. Januar 2019, 21:20

Eigentlich wollte ich nur eine einfache Möglichkeit zum Erkennen, wenn ein Objekt für den Nutzer nicht mehr sichtbar ist.

Ist ein `QGraphicsScene`-Objekt eine Zone oder Region?

Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 21:26

Diese Methoden sind eine Möglichkeit - wenn du die sichtbare Region (die dann ein Rechteck ist) zur Abfrage nutzt, dann erhältst du die sichtbaren items zurück.

Aber warum willst du das? Die Kombination aus view und Scene löst das doch für dich.

Und die Scene ist keine Region. Sondern ein Sack voller Objekte.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 20. Januar 2019, 21:29

@__deets__: Meinst du mit "view" ein `QGraphicsView`-Objekt?

Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 21:31

Ja.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 20. Januar 2019, 21:34

@__deets__: Werden Objekte außerhalb einer `QGraphicsView` automatisch gelöscht?

Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 21:43

Nein. Aber sie werden effizient ausgefiltert. All das steht auch in der Doku. Und solange du kein Problem hast, musst du auch keines lösen. Hast du eines?
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 20. Januar 2019, 21:48

Schön, wenn man sich um die Entfernung von enteilten Objekten nicht zu kümmern braucht.

Gruß
Atalanttore
__deets__
User
Beiträge: 6062
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 21:56

Endlos geht das natürlich nicht. Aber das ganze ist explizit konstruiert worden um effizient zu filtern, was nicht sichtbar ist. Solange du also kein Problem hast, musst du dich auch nicht grämen. Wenn du eines bekommst, ist die Frage nach “was ist sichtbar” mit den genannten Methoden und http://doc.qt.io/qt-5/qgraphicsview.html#sceneRect-prop als Argument ermitteln.
Antworten