📄 qwt_event_pattern.cpp
字号:
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** * Qwt Widget Library * Copyright (C) 1997 Josef Wilgen * Copyright (C) 2002 Uwe Rathmann * * This library is free software; you can redistribute it and/or * modify it under the terms of the Qwt License, Version 1.0 *****************************************************************************/#include <qevent.h>#include "qwt_event_pattern.h"/*! Constructor \sa MousePatternCode, KeyPatternCode*/QwtEventPattern::QwtEventPattern(): d_mousePattern(MousePatternCount), d_keyPattern(KeyPatternCount){ initKeyPattern(); initMousePattern(3);}//! DestructorQwtEventPattern::~QwtEventPattern(){}/*! Set default mouse patterns, depending on the number of mouse buttons \param numButtons Number of mouse buttons ( <= 3 ) \sa MousePatternCode*/void QwtEventPattern::initMousePattern(int numButtons){ d_mousePattern.resize(MousePatternCount); switch(numButtons) { case 1: { setMousePattern(MouseSelect1, Qt::LeftButton); setMousePattern(MouseSelect2, Qt::LeftButton, Qt::ControlButton); setMousePattern(MouseSelect3, Qt::LeftButton, Qt::AltButton); break; } case 2: { setMousePattern(MouseSelect1, Qt::LeftButton); setMousePattern(MouseSelect2, Qt::RightButton); setMousePattern(MouseSelect3, Qt::LeftButton, Qt::AltButton); break; } default: { setMousePattern(MouseSelect1, Qt::LeftButton); setMousePattern(MouseSelect2, Qt::RightButton); setMousePattern(MouseSelect3, Qt::MidButton); } } for ( int i = 0; i < 3; i++ ) { setMousePattern(MouseSelect4 + i, d_mousePattern[MouseSelect1 + i].button, d_mousePattern[MouseSelect1 + i].state | Qt::ShiftButton); }}/*! Set default mouse patterns. \sa KeyPatternCode*/void QwtEventPattern::initKeyPattern(){ d_keyPattern.resize(KeyPatternCount); setKeyPattern(KeySelect1, Qt::Key_Return); setKeyPattern(KeySelect2, Qt::Key_Space); setKeyPattern(KeyAbort, Qt::Key_Escape); setKeyPattern(KeyLeft, Qt::Key_Left); setKeyPattern(KeyRight, Qt::Key_Right); setKeyPattern(KeyUp, Qt::Key_Up); setKeyPattern(KeyDown, Qt::Key_Down); setKeyPattern(KeyRedo, Qt::Key_Plus); setKeyPattern(KeyUndo, Qt::Key_Minus); setKeyPattern(KeyHome, Qt::Key_Escape);}/*! Change one mouse pattern \param pattern Index of the pattern \param button Button \param state State \sa QMouseEvent*/void QwtEventPattern::setMousePattern(uint pattern, int button, int state){ if ( pattern < d_mousePattern.count() ) { d_mousePattern[int(pattern)].button = button; d_mousePattern[int(pattern)].state = state; }}/*! Change one key pattern \param pattern Index of the pattern \param key Key \param state State \sa QKeyEvent*/void QwtEventPattern::setKeyPattern(uint pattern, int key, int state){ if ( pattern < d_keyPattern.count() ) { d_keyPattern[int(pattern)].key = key; d_keyPattern[int(pattern)].state = state; }}//! Change the mouse event patternsvoid QwtEventPattern::setMousePattern(const QwtArray<MousePattern> &pattern){ d_mousePattern = pattern;}//! Change the key event patternsvoid QwtEventPattern::setKeyPattern(const QwtArray<KeyPattern> &pattern){ d_keyPattern = pattern;}//! Return mouse patternsconst QwtArray<QwtEventPattern::MousePattern> &QwtEventPattern::mousePattern() const{ return d_mousePattern;}//! Return key patternsconst QwtArray<QwtEventPattern::KeyPattern> &QwtEventPattern::keyPattern() const{ return d_keyPattern;}//! Return ,ouse patternsQwtArray<QwtEventPattern::MousePattern> &QwtEventPattern::mousePattern() { return d_mousePattern;}//! Return Key patternsQwtArray<QwtEventPattern::KeyPattern> &QwtEventPattern::keyPattern() { return d_keyPattern;}/*! \brief Compare a mouse event with an event pattern. A mouse event matches the pattern when both have the same button value and in the state value the same key flags(Qt::KeyButtonMask) are set. \param pattern Index of the event pattern \param e Mouse event \return TRUE if matches \sa keyMatch()*/bool QwtEventPattern::mouseMatch(uint pattern, const QMouseEvent *e) const{ bool ok = FALSE; if ( e && pattern < d_mousePattern.count() ) ok = mouseMatch(d_mousePattern[int(pattern)], e); return ok;}/*! \brief Compare a mouse event with an event pattern. A mouse event matches the pattern when both have the same button value and in the state value the same key flags(Qt::KeyButtonMask) are set. \param pattern Mouse event pattern \param e Mouse event \return TRUE if matches \sa keyMatch()*/bool QwtEventPattern::mouseMatch(const MousePattern &pattern, const QMouseEvent *e) const{ return (e->button() == pattern.button) && ((e->state() & Qt::KeyButtonMask) == (pattern.state & Qt::KeyButtonMask));}/*! \brief Compare a key event with an event pattern. A key event matches the pattern when both have the same key value and in the state value the same key flags (Qt::KeyButtonMask) are set. \param pattern Index of the event pattern \param e Key event \return TRUE if matches \sa mouseMatch()*/bool QwtEventPattern::keyMatch(uint pattern, const QKeyEvent *e) const{ bool ok = FALSE; if ( e && pattern < d_keyPattern.count() ) ok = keyMatch(d_keyPattern[int(pattern)], e); return ok;}/*! \brief Compare a key event with an event pattern. A key event matches the pattern when both have the same key value and in the state value the same key flags (Qt::KeyButtonMask) are set. \param pattern Key event pattern \param e Key event \return TRUE if matches \sa mouseMatch()*/bool QwtEventPattern::keyMatch( const KeyPattern &pattern, const QKeyEvent *e) const{ return (e->key() == pattern.key) && ((e->state() & Qt::KeyButtonMask) == (pattern.state & Qt::KeyButtonMask));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -