qkeysequence.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:6k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QKEYSEQUENCE_H
  38. #define QKEYSEQUENCE_H
  39. #include <QtCore/qnamespace.h>
  40. #include <QtCore/qstring.h>
  41. QT_BEGIN_HEADER
  42. QT_BEGIN_NAMESPACE
  43. QT_MODULE(Gui)
  44. #ifndef QT_NO_SHORTCUT
  45. /*****************************************************************************
  46.   QKeySequence stream functions
  47.  *****************************************************************************/
  48. #ifndef QT_NO_DATASTREAM
  49. class QKeySequence;
  50. Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
  51. Q_GUI_EXPORT QDataStream &operator>>(QDataStream &out, QKeySequence &ks);
  52. #endif
  53. #ifdef qdoc
  54. void qt_set_sequence_auto_mnemonic(bool b);
  55. #endif
  56. class QVariant;
  57. class QKeySequencePrivate;
  58. class Q_GUI_EXPORT QKeySequence
  59. {
  60. public:
  61.     enum StandardKey {
  62.         UnknownKey,
  63.         HelpContents,
  64.         WhatsThis,
  65.         Open,
  66.         Close,
  67.         Save,
  68.         New,
  69.         Delete,
  70.         Cut,
  71.         Copy,
  72.         Paste,
  73.         Undo,
  74.         Redo,
  75.         Back,
  76.         Forward,
  77.         Refresh,
  78.         ZoomIn,
  79.         ZoomOut,
  80.         Print,
  81.         AddTab,
  82.         NextChild,
  83.         PreviousChild,
  84.         Find,
  85.         FindNext,
  86.         FindPrevious,
  87.         Replace,
  88.         SelectAll,
  89.         Bold,
  90.         Italic,
  91.         Underline,
  92.         MoveToNextChar,
  93.         MoveToPreviousChar,
  94.         MoveToNextWord,
  95.         MoveToPreviousWord,
  96.         MoveToNextLine,
  97.         MoveToPreviousLine,
  98.         MoveToNextPage,
  99.         MoveToPreviousPage,
  100.         MoveToStartOfLine,
  101.         MoveToEndOfLine,
  102.         MoveToStartOfBlock,
  103.         MoveToEndOfBlock,
  104.         MoveToStartOfDocument,
  105.         MoveToEndOfDocument,
  106.         SelectNextChar,
  107.         SelectPreviousChar,
  108.         SelectNextWord,
  109.         SelectPreviousWord,
  110.         SelectNextLine,
  111.         SelectPreviousLine,
  112.         SelectNextPage,
  113.         SelectPreviousPage,
  114.         SelectStartOfLine,
  115.         SelectEndOfLine,
  116.         SelectStartOfBlock,
  117.         SelectEndOfBlock,
  118.         SelectStartOfDocument,
  119.         SelectEndOfDocument,
  120.         DeleteStartOfWord,
  121.         DeleteEndOfWord,
  122.         DeleteEndOfLine
  123.      };
  124.     QKeySequence();
  125.     QKeySequence(const QString &key);
  126.     QKeySequence(int k1, int k2 = 0, int k3 = 0, int k4 = 0);
  127.     QKeySequence(const QKeySequence &ks);
  128.     QKeySequence(StandardKey key);
  129.     ~QKeySequence();
  130.     uint count() const; // ### Qt 5: return 'int'
  131.     bool isEmpty() const;
  132.     enum SequenceMatch {
  133.         NoMatch,
  134.         PartialMatch,
  135.         ExactMatch
  136. #ifdef QT3_SUPPORT
  137.         , Identical = ExactMatch
  138. #endif
  139.     };
  140.     enum SequenceFormat {
  141.         NativeText,
  142.         PortableText
  143.     };
  144.     QString toString(SequenceFormat format = PortableText) const;
  145.     static QKeySequence fromString(const QString &str, SequenceFormat format = PortableText);
  146.     SequenceMatch matches(const QKeySequence &seq) const;
  147.     static QKeySequence mnemonic(const QString &text);
  148.     static QList<QKeySequence> keyBindings(StandardKey key);
  149.     // ### Qt 5: kill 'operator QString' - it's evil
  150.     operator QString() const;
  151.     operator QVariant() const;
  152.     operator int() const;
  153.     int operator[](uint i) const;
  154.     QKeySequence &operator=(const QKeySequence &other);
  155.     bool operator==(const QKeySequence &other) const;
  156.     inline bool operator!= (const QKeySequence &other) const
  157.     { return !(*this == other); }
  158.     bool operator< (const QKeySequence &ks) const;
  159.     inline bool operator> (const QKeySequence &other) const
  160.     { return other < *this; }
  161.     inline bool operator<= (const QKeySequence &other) const
  162.     { return !(other < *this); }
  163.     inline bool operator>= (const QKeySequence &other) const
  164.     { return !(*this < other); }
  165.     bool isDetached() const;
  166. private:
  167.     static int decodeString(const QString &ks);
  168.     static QString encodeString(int key);
  169.     int assign(const QString &str);
  170.     void setKey(int key, int index);
  171.     QKeySequencePrivate *d;
  172.     friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
  173.     friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QKeySequence &ks);
  174.     friend class Q3AccelManager;
  175.     friend class QShortcutMap;
  176.     friend class QShortcut;
  177. public:
  178.     typedef QKeySequencePrivate * DataPtr;
  179.     inline DataPtr &data_ptr() { return d; }
  180. };
  181. Q_DECLARE_TYPEINFO(QKeySequence, Q_MOVABLE_TYPE);
  182. Q_DECLARE_SHARED(QKeySequence)
  183. #ifndef QT_NO_DEBUG_STREAM
  184. Q_GUI_EXPORT QDebug operator<<(QDebug, const QKeySequence &);
  185. #endif
  186. #else
  187. class Q_GUI_EXPORT QKeySequence
  188. {
  189. public:
  190.     QKeySequence() {}
  191.     QKeySequence(int) {}
  192. };
  193. #endif // QT_NO_SHORTCUT
  194. QT_END_NAMESPACE
  195. QT_END_HEADER
  196. #endif // QKEYSEQUENCE_H