Zoombereich durch Rechteckfenster festlegen

Alles rund um die Programmierung mit Qt
Antworten
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Zoombereich durch Rechteckfenster festlegen

Beitrag von Thomas »

Hallo,

ich möchte in meinem Programm neben dem normalen größer und kleiner Zoomen auch die Möglichkeit eines "Fensterzoomes", wie er z.B. in CAD-Programmen verwirklicht ist, einbauen.

Nun stellt sich für mich als Anfänger die Frage unter Verwendung welcher Qt-Klassen ich die dynamische Zoombereichsfestlegung verwirklichen kann. Ich möchte durch einen Mausklick eine Rechteckecke festlegen danach durch Verschieben der Maus das Rechteck aufziehen und z.B. durch einen erneuten Mausklick die Größe festlegen.

Meine Frage bezieht sich auf die Darstellung des Rechteckes während des Verschiebens der Maus. Wie kann ich das Rechteck zeichnen bzw. es dynamisch vergrößern und verkleinern. Lässt sich dafür diese QRubberBand Klasse verwenden?

Über ein paar Tipps bin ich dankbar.

Gruß

Thomas
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

QRubberBand - das ist es wohl genau...
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag von Uwe »

lepsai hat geschrieben:QRubberBand - das ist es wohl genau...
Eigentlich nicht. Das Aussehen von QRubberBand ist vom Style abhängig und in der Regel viel zu fett um damit ordentlich selektieren zu können. (Laut TrollTech auch nicht dafür gedacht).

Du findest in Qwt (http://qwt.sf.net) eine Klasse QwtPicker (http://qwt.sourceforge.net/class_qwt_picker.html), die vermutlich eher leistet was hier gefordert ist. Prinzipiell geht das so:

QwtPicker picker = new QwtPicker(yourWidget);
picker->setSelectionFlags(QwtPicker::RectSelection | QwtPicker::DragSelection);
picker->setRubberBand(QwtPicker::RectRubberBand);
connect(picker. SIGNAL(selected(const QPointArray &pa)), ...);

Uwe
Antworten