Seite 1 von 1

Abfragen ob Ansicht des GraphicsViews geändert hat

Verfasst: 1. Mai 2009 13:32
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?

Verfasst: 1. Mai 2009 20:11
von upsala
Die ScrollBars lösen Signale bei Änderungen aus.

Verfasst: 2. Mai 2009 00:07
von Strahlex
Danke und gleich noch eine Frage:
Kann man irgentwie die ScrollBar von unten auf die obere Seite des GraphicViews legen?

Verfasst: 2. Mai 2009 08:04
von upsala
Du könntest dir die Sourcen von Qt dazu mal ansehen, aber wahrscheinlich ist es leichter den Monitor einfach umzudrehen...

Verfasst: 2. Mai 2009 11:22
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?

Verfasst: 2. Mai 2009 12:21
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.

Verfasst: 2. Mai 2009 15:21
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

Verfasst: 3. Mai 2009 23:03
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?

Verfasst: 4. Mai 2009 09:10
von upsala
Du baust Scroll-Leisten ein, aber der Benutzer darf sie nicht benutzen? Seltsame Logik...

Verfasst: 4. Mai 2009 17:38
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.

Verfasst: 5. Mai 2009 09:20
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.