Abfragen ob Ansicht des GraphicsViews geändert hat

Alles rund um die Programmierung mit Qt
Antworten
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Abfragen ob Ansicht des GraphicsViews geändert hat

Beitrag von Strahlex »

Wie kann ich abfragen ob sich die Ansicht in einen GraphicsView geändert hat (also wenn der User herumgescrollt) bzw. gibts da ein Siganl dafür?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Die ScrollBars lösen Signale bei Änderungen aus.
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Danke und gleich noch eine Frage:
Kann man irgentwie die ScrollBar von unten auf die obere Seite des GraphicViews legen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du könntest dir die Sourcen von Qt dazu mal ansehen, aber wahrscheinlich ist es leichter den Monitor einfach umzudrehen...
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Würd nicht viel helfen, es sieht nur halt etwas seltsam aus wenn die ScrollBar zwischen den GraphicViews liegt (außerdem passt dann die Höhe nicht):
Bild

EDIT: Kann vielleicht irgentwie die ScrollBar rauslösen und in das andere GraphicsView einfügen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du könntest deine Meter-Anzeigen im GraphicsView integrieren (genauso wie die ScrollBars eingebaut sind)
Außerdem müsste es möglich sein, eine ScrollBar auf AlwaysOff zu setzen eine eigene ScrollBar zu erstellen und diese beiden miteinander zu koppeln.
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Mit diesem Codekunstück hats funktioniert:

Code: Alles auswählen

    QGridLayout *layout = (QGridLayout*)ui->frame->layout();
    layout->addWidget(ui->graphicsView->horizontalScrollBar(),2,1);
    layout->addWidget(ui->graphicsView->verticalScrollBar(),0,2);
Bild
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

So und da gleich noch eine Frage:
Wie kann man verhindern, das wenn man in einem GraphicsView mit dem Mausrad scrollt sich die Ansicht nach oben oder unten verschiebt?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du baust Scroll-Leisten ein, aber der Benutzer darf sie nicht benutzen? Seltsame Logik...
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Doch natürlich darf der Benutzer scrollen, nur soll er nicht mit dem Mausrad direkt am GraphicsView scrollen dürfen (das geht leider auch bei GraphicViews ohne ScrollBar), weil da soll er ja zoomen können.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Bei den ganzen Änderungen, die du am Verhalten von QGraphicsView haben willst, wäre es mittlerweile angebracht, eine eigene Klasse von QGraphicsView abzuleiten.
Dort kannst du dann wheelEvent implementieren und zoomen statt scrollen.
Antworten