#include <QKeyFrameBar.h>
Die Klasse QKeyFrameBar realisiert ein QT-Steuerelement auf der Basis von QWidget, welches zur Anzeige und Manipulation von Keyframes dient, die in einem CFrameList -Objekt gespeichert sind.
Das Steuerlement stellt eine Zeitleiste dar, in der die Keyframes als senkrechte farbige Striche eingetragen sind. Das Steuerelement besitzt einen Framecursor, der mit der Maus verschoben werden kann. Ebenfalls mit der Maus können existierende Keyframes entlang der Zeitachse bewegt werden. Das Steuerelement stellt Funktionalität bezüglich des Sichtbereichs. Er kann gezoomt und gescrollt werden.
|
Die Enumeration enuFrameBarMode enthält Konstanten, die für den gerade aktiven Bearbeitungsmodus des QKeyframeBars stehen. |
|
Der Konstruktor setzt alle Steuerelementeigenschaften auf Standardwerte. Der Parameter name gibt den Namen des Widgets an. Der Parameter parent gibt das Eltern-Widget an, in welches das QKeyframeBar-Widget eingefügt wird. |
|
Der Standarddestruktor setzt die Framelist-Referenz auf NULL zurück. |
|
Der Event-Handler mouseMoveEvent() behandelt Mausbewegungen. Befindet sich das QKeyFrameBar im Bearbeitungsmodus mdMoveFrameCursor, so wird der Framecursor an die entsprechende Stelle verschoben. Falls das Senden von Cursorsignalen aktiviert ist, so wird das Signal cursorPositionChanged() gesendet. Wird der Cursor mit der rechten Maustaste gezogen, so wird das Signal interpolateAt() gesendet. Befindet sich das QKeyFrameBar im Bearbeitungsmodus mdMoveFrame, so wird das angewählte Keyframe an die entsprechende Stelle verschoben. |
|
Der Event-Handler mousePressEvent() behandelt das Drücken von Maustasten. Wurde die Linkemaustaste gedrückt, so selektiert der Eventhandler je nachdem wo sich der Mauszeiger befindet entweder den Framecursor, oder ein Keyframe. Danach wird QKeyFrameBar in den jeweiligen Verschiebemodus versetzt. Wurde der Framecursor mit der rechten Maustaste angelickt, so wird er selektiert, QKeyFrameBar in den Verschiebemodus versetzt und zusätzlich das Flag SendInterpolationEvent gesetzt, so daß beim Verschieben des Cursors Interpolationssignale ausgelöst werden. |
|
Der Event-Handler mouseReleaseEvent() behandelt das Loslassen von Maustasten. Grundsätzlich wird QKeyFrameBar in den Modus mdNothing versetzt. Wurde die rechte Maustaste losgelassen, so wird das Signal finishInterpolate() gesendet. Wurde ein Keyframe verschoben, so wird das Keyframe in der Keyframeliste verschoben und die Ansicht aktualisiert. |
|
Der Event-Handler keyPressEvent behandlet das Drücken von Tasten. Wurden die horizontalen Cursortasten betätigt, so scrollt der Eventhandler die Ansicht entweder nach links, oder nach rechts. Wurden die Tasten + oder - gedrückt, so zoomt der Eventhandler die Ansicht entsprechend. |
|
Die Methode setFrameList() setzt die Referenz auf die darzustellende Keyframeliste. Die Darstellung wird dabei aktualisiert. |
|
Die Methode setCursorPosition() setzt den Framecursor an die über newValue spezifizierte Position. Das Widget wird dabei neu gezeichnet. |
|
Mit der Methode setSelectedKeyFrame() läßt sich eine Referenz auf ein Keyframe festlegen, welches als markiert gelten soll.
|
|
Die Methode setRasterResolution() setzt die Auflösung des Framerasters. Der Parameter newValue gibt an, in welchen Abständen ein senkrechter Skalenstrich mit eine Zeitangabe gezeichnet werden soll. Das Steuerelement wird neu gezeichnet. |
|
Die Methode setDisplayRange() legt das Zeitfenster fest. nur die Keyframes, die sich innerhalb des Sichtbereichs befinden werden dargestellt. Der Parameter dispStart gibt den Zeitindex an, der zum linken Rand von QKeyFrameBar korrespondiert. Der Parameter dispEnd gibt den Zeitindex an, der zum rechten Rand von QKeyFrameBar korrespondiert.
|
|
Die Methode growDisplayRange() erweitert den Sichtbereich, indem sie den Wert delta vom Anfang des Sichtbereichs subtrahiert und zum Ende des Sichtbereichs aufaddiert. |
|
Die Methode shrinkDisplayRange() verkleinert den Sichtbereich, indem sie den Wert delta vom Ende des Sichtbereichs subtrahiert und zum Anfang des Sichtbereichs aufaddiert. |
|
Die Methode centerView(float position) richtet den Sichtbereich so aus, daß die durch position festgelegte Stelle genau in der Mitte liegt. Die Größe des Sichtbereichs bleibt erhalten. Das Steuerelement wird neu gezeichnet. |
|
Die Methode centerView() ruft die überladene Methode centerView(float position), so daß der Sichtbereich genau auf den Framecursor zentriert wird. |
|
Die Methode scroll() verschiebt den Sichtbereich um den durch dx angegebenen Wert. Die Sichtbereichsgröße bleibt erhalten. Das Steuerelement wird neu gezeichnet. |