KeyboardAction
with their default accelerator keys.
KeyboardAction |
Key | Description | Associated function |
DRAW_AXIS | A | Toggles the display of the world axis | QGLViewer::toggleDrawAxis() |
DRAW_GRID | G | Toggles the display of the XY grid | QGLViewer::toggleDrawGrid() |
DISPLAY_FPS | F | Toggles the display of the frame rate | QGLViewer::toggleDisplayFPS() |
ENABLE_TEXT | ? | Toggles the display of all the text | QGLViewer::toggleEnableText() |
STEREO | S | Toggles the stereo display | QGLViewer::toggleStereoDisplay() |
HELP | H | Displays a help window | QGLViewer::help() |
EXIT | Escape | Quits the application | qApp->quit |
CAMERA_MODE | Space | Switches between the FLY and REVOLVE camera mode | camera()->toggleMode() |
ANIMATION | Return | Starts/stops the animation loop | QGLViewer::toggleAnimationMode() |
SAVE_SCREENSHOT | Ctrl+S | Opens the save screenshot dialog box | QGLViewer::saveSnapshot() |
FULL_SCREEN | Alt+Return | Toggles the full screen mode | QGLViewer::toggleFullScreen() |
EDIT_CAMERA_PATHS | C | Toggles the camera key frame path editor | toggleCameraPathEditor() |
DISPLAY_Z_BUFFER | Z | Toggles z-buffer display | QGLViewer::toggleDisplayZBuffer() |
INCREASE_FLYSPEED DECREASE_FLYSPEED |
+ / - | Increases or decreases the camera fly speed. | camera()->setFlySpeed() |
MOVE_CAMERA_LEFT MOVE_CAMERA_RIGHT MOVE_CAMERA_UP MOVE_CAMERA_DOWN |
Left, right up and down arrow keys |
Moves the camera, parallel to the screen. Displacement amplitude is proportionnal to flySpeed() |
camera()->frame()->translate(...) |
See setKeyFrameKey() andsetPlayKeyFramePathStateKey() |
F1...F12 | Plays/Pauses camera key frame path (if defined) Reset the path when Fx is quickly press twice. |
camera()->playKeyFramePath(i) camera()->resetKeyFramePath(i) |
See setKeyFrameKey() andsetAddKeyFrameStateKey() |
Alt+(F1...F12) | Defines a new camera key frame for path 1..12. Deletes the path when Fx is quickly press twice. |
camera()->addKeyFrame(i) camera()->deleteKeyFrame(i) |
Use QGLViewer::setKeyboardAccelerator(Action, Key)
to redefine one of these default
accelerators (probably in your init()
function). Action
is defined by the
KeyboardAction
enum, described in the above table, while Key
is provided
as an int
using Qt enumerated values. Setting 0
as the accelerator key
disables the associated KeyboardAction
:
void Viewer::init() { // Press 'Q' to exit application setKeyboardAccelerator(EXIT, Key_Q); // Alt+M toggles camera mode setKeyboardAccelerator(CAMERA_MODE, ALT+Key_M); // Ctrl+Alt+Up moves the camera up setKeyboardAccelerator(MOVE_CAMERA_UP, CTRL+ALT+Key_Up); // The DISPLAY_Z_BUFFER action is disabled setKeyboardAccelerator(DISPLAY_Z_BUFFER, 0); }You can retrieve the current accelerator key value with
keyboardAccelerator(Action)
.
Current bindings are displayed in the help window "Keyboard" tab.
void QGLViewer::keyPressEvent(QKeyEvent *e)
method:
void Viewer::keyPressEvent(QKeyEvent *e) { switch (e->key()) { case Qt::Key_R : reset(); updateGL(); break; // and so on... // Call the original method to handle other keys default: QGLViewer::keyPressEvent(e); } }You should then use
setKeyDescription()
to add a short description of your keyboard
accelerator in the help
window Keyboard
tab. See the keyboardAndMouse example for a practical illustration.
An other option is to bind an instance of a QAccel
object to your viewer, thus enabling
complex key sequences accelerators.
Camera
holds 12 KeyFrameInterpolator
, that are binded to the
F1...F12
keys by default. The following bindings are defined:
Alt+Fx
adds a new keyFrame to path x.Fx
will then make the Camera play/pause the associated path (or will simply
restore the saved position if only one keyFrame was defined for this path).Fx
twice resets the interpolation:
Alt+Fx+Fx
deletes path x.Fx+Fx
resets path x to its starting point.setKeyFrameKey(const int nb, const int key)
(default are F1...F12
for
path 0..11), setAddKeyFrameStateKey(const ushort skey)
(default is Alt
) andsetPlayKeyFramePathStateKey(const ushort skey)
(default is Qt::NoButton
).