1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QEVENT_H 43 #define QEVENT_H 44 45 #include <QtGui/qwindowdefs.h> 46 #include <QtCore/qobject.h> 47 #include <QtGui/qregion.h> 48 #include <QtCore/qnamespace.h> 49 #include <QtCore/qstring.h> 50 #include <QtGui/qkeysequence.h> 51 #include <QtCore/qcoreevent.h> 52 #include <QtGui/qmime.h> 53 #include <QtGui/qdrag.h> 54 #include <QtCore/qvariant.h> 55 #include <QtCore/qmap.h> 56 #include <QtCore/qset.h> 57 #include <QtCore/qfile.h> 58 59 #ifdef Q_OS_SYMBIAN 60 class RFile; 61 #endif 62 63 QT_BEGIN_HEADER 64 65 QT_BEGIN_NAMESPACE 66 67 QT_MODULE(Gui) 68 69 class QAction; 70 #ifndef QT_NO_GESTURES 71 class QGesture; 72 #endif 73 74 class Q_GUI_EXPORT QInputEvent : public QEvent 75 { 76 public: 77 QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier); 78 ~QInputEvent(); modifiers()79 inline Qt::KeyboardModifiers modifiers() const { return modState; } setModifiers(Qt::KeyboardModifiers amodifiers)80 inline void setModifiers(Qt::KeyboardModifiers amodifiers) { modState = amodifiers; } 81 protected: 82 Qt::KeyboardModifiers modState; 83 }; 84 85 class Q_GUI_EXPORT QMouseEvent : public QInputEvent 86 { 87 public: 88 QMouseEvent(Type type, const QPoint &pos, Qt::MouseButton button, 89 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); 90 QMouseEvent(Type type, const QPoint &pos, const QPoint &globalPos, 91 Qt::MouseButton button, Qt::MouseButtons buttons, 92 Qt::KeyboardModifiers modifiers); 93 ~QMouseEvent(); 94 pos()95 inline const QPoint &pos() const { return p; } globalPos()96 inline const QPoint &globalPos() const { return g; } x()97 inline int x() const { return p.x(); } y()98 inline int y() const { return p.y(); } globalX()99 inline int globalX() const { return g.x(); } globalY()100 inline int globalY() const { return g.y(); } button()101 inline Qt::MouseButton button() const { return b; } buttons()102 inline Qt::MouseButtons buttons() const { return mouseState; } 103 104 static QMouseEvent *createExtendedMouseEvent(Type type, const QPointF &pos, 105 const QPoint &globalPos, Qt::MouseButton button, 106 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); hasExtendedInfo()107 inline bool hasExtendedInfo() const { return reinterpret_cast<const QMouseEvent *>(d) == this; } 108 QPointF posF() const; 109 110 #ifdef QT3_SUPPORT 111 QT3_SUPPORT_CONSTRUCTOR QMouseEvent(Type type, const QPoint &pos, Qt::ButtonState button, int state); 112 QT3_SUPPORT_CONSTRUCTOR QMouseEvent(Type type, const QPoint &pos, const QPoint &globalPos, 113 Qt::ButtonState button, int state); state()114 inline QT3_SUPPORT Qt::ButtonState state() const 115 { return Qt::ButtonState((mouseState^b)|int(modifiers())); } stateAfter()116 inline QT3_SUPPORT Qt::ButtonState stateAfter() const 117 { return Qt::ButtonState(int(mouseState)|int(modifiers())); } 118 #endif 119 protected: 120 QPoint p, g; 121 Qt::MouseButton b; 122 Qt::MouseButtons mouseState; 123 }; 124 125 class Q_GUI_EXPORT QHoverEvent : public QEvent 126 { 127 public: 128 QHoverEvent(Type type, const QPoint &pos, const QPoint &oldPos); 129 ~QHoverEvent(); 130 pos()131 inline const QPoint &pos() const { return p; } oldPos()132 inline const QPoint &oldPos() const { return op; } 133 134 protected: 135 QPoint p, op; 136 }; 137 138 #ifndef QT_NO_WHEELEVENT 139 class Q_GUI_EXPORT QWheelEvent : public QInputEvent 140 { 141 public: 142 QWheelEvent(const QPoint &pos, int delta, 143 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, 144 Qt::Orientation orient = Qt::Vertical); 145 QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta, 146 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, 147 Qt::Orientation orient = Qt::Vertical); 148 ~QWheelEvent(); 149 delta()150 inline int delta() const { return d; } pos()151 inline const QPoint &pos() const { return p; } globalPos()152 inline const QPoint &globalPos() const { return g; } x()153 inline int x() const { return p.x(); } y()154 inline int y() const { return p.y(); } globalX()155 inline int globalX() const { return g.x(); } globalY()156 inline int globalY() const { return g.y(); } 157 buttons()158 inline Qt::MouseButtons buttons() const { return mouseState; } orientation()159 Qt::Orientation orientation() const { return o; } 160 161 #ifdef QT3_SUPPORT 162 QT3_SUPPORT_CONSTRUCTOR QWheelEvent(const QPoint &pos, int delta, int state, 163 Qt::Orientation orient = Qt::Vertical); 164 QT3_SUPPORT_CONSTRUCTOR QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta, int state, 165 Qt::Orientation orient = Qt::Vertical); state()166 inline QT3_SUPPORT Qt::ButtonState state() const 167 { return static_cast<Qt::ButtonState>(int(buttons())|int(modifiers())); } 168 #endif 169 protected: 170 QPoint p; 171 QPoint g; 172 int d; 173 Qt::MouseButtons mouseState; 174 Qt::Orientation o; 175 }; 176 #endif 177 178 #ifndef QT_NO_TABLETEVENT 179 class Q_GUI_EXPORT QTabletEvent : public QInputEvent 180 { 181 public: 182 enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, 183 XFreeEraser /*internal*/, RotationStylus }; 184 enum PointerType { UnknownPointer, Pen, Cursor, Eraser }; 185 QTabletEvent(Type t, const QPoint &pos, const QPoint &globalPos, const QPointF &hiResGlobalPos, 186 int device, int pointerType, qreal pressure, int xTilt, int yTilt, 187 qreal tangentialPressure, qreal rotation, int z, 188 Qt::KeyboardModifiers keyState, qint64 uniqueID); 189 ~QTabletEvent(); 190 pos()191 inline const QPoint &pos() const { return mPos; } globalPos()192 inline const QPoint &globalPos() const { return mGPos; } hiResGlobalPos()193 inline const QPointF &hiResGlobalPos() const { return mHiResGlobalPos; } x()194 inline int x() const { return mPos.x(); } y()195 inline int y() const { return mPos.y(); } globalX()196 inline int globalX() const { return mGPos.x(); } globalY()197 inline int globalY() const { return mGPos.y(); } hiResGlobalX()198 inline qreal hiResGlobalX() const { return mHiResGlobalPos.x(); } hiResGlobalY()199 inline qreal hiResGlobalY() const { return mHiResGlobalPos.y(); } device()200 inline TabletDevice device() const { return TabletDevice(mDev); } pointerType()201 inline PointerType pointerType() const { return PointerType(mPointerType); } uniqueId()202 inline qint64 uniqueId() const { return mUnique; } pressure()203 inline qreal pressure() const { return mPress; } z()204 inline int z() const { return mZ; } tangentialPressure()205 inline qreal tangentialPressure() const { return mTangential; } rotation()206 inline qreal rotation() const { return mRot; } xTilt()207 inline int xTilt() const { return mXT; } yTilt()208 inline int yTilt() const { return mYT; } 209 210 protected: 211 QPoint mPos, mGPos; 212 QPointF mHiResGlobalPos; 213 int mDev, mPointerType, mXT, mYT, mZ; 214 qreal mPress, mTangential, mRot; 215 qint64 mUnique; 216 217 // I don't know what the future holds for tablets but there could be some 218 // new devices coming along, and there seem to be "holes" in the 219 // OS-specific events for this. 220 void *mExtra; 221 }; 222 #endif // QT_NO_TABLETEVENT 223 224 class Q_GUI_EXPORT QKeyEvent : public QInputEvent 225 { 226 public: 227 QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(), 228 bool autorep = false, ushort count = 1); 229 ~QKeyEvent(); 230 key()231 int key() const { return k; } 232 #ifndef QT_NO_SHORTCUT 233 bool matches(QKeySequence::StandardKey key) const; 234 #endif 235 Qt::KeyboardModifiers modifiers() const; text()236 inline QString text() const { return txt; } isAutoRepeat()237 inline bool isAutoRepeat() const { return autor; } count()238 inline int count() const { return int(c); } 239 240 // Functions for the extended key event information 241 static QKeyEvent *createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, 242 quint32 nativeScanCode, quint32 nativeVirtualKey, 243 quint32 nativeModifiers, 244 const QString& text = QString(), bool autorep = false, 245 ushort count = 1); hasExtendedInfo()246 inline bool hasExtendedInfo() const { return reinterpret_cast<const QKeyEvent*>(d) == this; } 247 quint32 nativeScanCode() const; 248 quint32 nativeVirtualKey() const; 249 quint32 nativeModifiers() const; 250 251 #ifdef QT3_SUPPORT 252 inline QT3_SUPPORT_CONSTRUCTOR QKeyEvent(Type type, int key, int /*ascii*/, 253 int modifiers, const QString& text = QString(), 254 bool autorep = false, ushort count = 1) QInputEvent(type,Qt::KeyboardModifiers (modifiers & (int)Qt::KeyButtonMask))255 : QInputEvent(type, Qt::KeyboardModifiers(modifiers & (int)Qt::KeyButtonMask)), txt(text), k(key), 256 c(count), autor(autorep) 257 { 258 if (key >= Qt::Key_Back && key <= Qt::Key_MediaLast) 259 ignore(); 260 } ascii()261 inline QT3_SUPPORT int ascii() const 262 { return (txt.length() ? txt.unicode()->toLatin1() : 0); } state()263 inline QT3_SUPPORT Qt::ButtonState state() const { return Qt::ButtonState(QInputEvent::modifiers()); } stateAfter()264 inline QT3_SUPPORT Qt::ButtonState stateAfter() const { return Qt::ButtonState(modifiers()); } 265 #endif 266 267 protected: 268 QString txt; 269 int k; 270 ushort c; 271 uint autor:1; 272 }; 273 274 275 class Q_GUI_EXPORT QFocusEvent : public QEvent 276 { 277 public: 278 QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason); 279 ~QFocusEvent(); 280 gotFocus()281 inline bool gotFocus() const { return type() == FocusIn; } lostFocus()282 inline bool lostFocus() const { return type() == FocusOut; } 283 284 #ifdef QT3_SUPPORT 285 enum Reason { Mouse=Qt::MouseFocusReason, Tab=Qt::TabFocusReason, 286 Backtab=Qt::BacktabFocusReason, MenuBar=Qt::MenuBarFocusReason, 287 ActiveWindow=Qt::ActiveWindowFocusReason, Other=Qt::OtherFocusReason, 288 Popup=Qt::PopupFocusReason, Shortcut=Qt::ShortcutFocusReason }; 289 #endif 290 Qt::FocusReason reason(); 291 Qt::FocusReason reason() const; 292 293 private: 294 Qt::FocusReason m_reason; 295 }; 296 297 298 class Q_GUI_EXPORT QPaintEvent : public QEvent 299 { 300 public: 301 QPaintEvent(const QRegion& paintRegion); 302 QPaintEvent(const QRect &paintRect); 303 ~QPaintEvent(); 304 rect()305 inline const QRect &rect() const { return m_rect; } region()306 inline const QRegion ®ion() const { return m_region; } 307 308 #ifdef QT3_SUPPORT 309 QT3_SUPPORT_CONSTRUCTOR QPaintEvent(const QRegion &paintRegion, const QRect &paintRect); erased()310 inline QT3_SUPPORT bool erased() const { return m_erased; } setErased(bool b)311 inline QT3_SUPPORT void setErased(bool b) { m_erased = b; } 312 #endif 313 314 protected: 315 friend class QApplication; 316 friend class QCoreApplication; 317 QRect m_rect; 318 QRegion m_region; 319 bool m_erased; 320 }; 321 322 class QUpdateLaterEvent : public QEvent 323 { 324 public: 325 QUpdateLaterEvent(const QRegion& paintRegion); 326 ~QUpdateLaterEvent(); 327 region()328 inline const QRegion ®ion() const { return m_region; } 329 330 protected: 331 QRegion m_region; 332 }; 333 334 class Q_GUI_EXPORT QMoveEvent : public QEvent 335 { 336 public: 337 QMoveEvent(const QPoint &pos, const QPoint &oldPos); 338 ~QMoveEvent(); 339 pos()340 inline const QPoint &pos() const { return p; } oldPos()341 inline const QPoint &oldPos() const { return oldp;} 342 protected: 343 QPoint p, oldp; 344 friend class QApplication; 345 friend class QCoreApplication; 346 }; 347 348 349 class Q_GUI_EXPORT QResizeEvent : public QEvent 350 { 351 public: 352 QResizeEvent(const QSize &size, const QSize &oldSize); 353 ~QResizeEvent(); 354 size()355 inline const QSize &size() const { return s; } oldSize()356 inline const QSize &oldSize()const { return olds;} 357 protected: 358 QSize s, olds; 359 friend class QApplication; 360 friend class QCoreApplication; 361 }; 362 363 364 class Q_GUI_EXPORT QCloseEvent : public QEvent 365 { 366 public: 367 QCloseEvent(); 368 ~QCloseEvent(); 369 }; 370 371 372 class Q_GUI_EXPORT QIconDragEvent : public QEvent 373 { 374 public: 375 QIconDragEvent(); 376 ~QIconDragEvent(); 377 }; 378 379 380 class Q_GUI_EXPORT QShowEvent : public QEvent 381 { 382 public: 383 QShowEvent(); 384 ~QShowEvent(); 385 }; 386 387 388 class Q_GUI_EXPORT QHideEvent : public QEvent 389 { 390 public: 391 QHideEvent(); 392 ~QHideEvent(); 393 }; 394 395 #ifndef QT_NO_CONTEXTMENU 396 class Q_GUI_EXPORT QContextMenuEvent : public QInputEvent 397 { 398 public: 399 enum Reason { Mouse, Keyboard, Other }; 400 401 QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, 402 Qt::KeyboardModifiers modifiers); 403 QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos); 404 QContextMenuEvent(Reason reason, const QPoint &pos); 405 ~QContextMenuEvent(); 406 x()407 inline int x() const { return p.x(); } y()408 inline int y() const { return p.y(); } globalX()409 inline int globalX() const { return gp.x(); } globalY()410 inline int globalY() const { return gp.y(); } 411 pos()412 inline const QPoint& pos() const { return p; } globalPos()413 inline const QPoint& globalPos() const { return gp; } 414 reason()415 inline Reason reason() const { return Reason(reas); } 416 417 #ifdef QT3_SUPPORT 418 QT3_SUPPORT_CONSTRUCTOR QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, int); 419 QT3_SUPPORT_CONSTRUCTOR QContextMenuEvent(Reason reason, const QPoint &pos, int); 420 421 QT3_SUPPORT Qt::ButtonState state() const; 422 #endif 423 protected: 424 QPoint p; 425 QPoint gp; 426 uint reas : 8; 427 }; 428 #endif // QT_NO_CONTEXTMENU 429 430 #ifndef QT_NO_INPUTMETHOD 431 class Q_GUI_EXPORT QInputMethodEvent : public QEvent 432 { 433 public: 434 enum AttributeType { 435 TextFormat, 436 Cursor, 437 Language, 438 Ruby, 439 Selection 440 }; 441 class Attribute { 442 public: Attribute(AttributeType t,int s,int l,QVariant val)443 Attribute(AttributeType t, int s, int l, QVariant val) : type(t), start(s), length(l), value(val) {} 444 AttributeType type; 445 446 int start; 447 int length; 448 QVariant value; 449 }; 450 QInputMethodEvent(); 451 QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes); 452 void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0); 453 attributes()454 inline const QList<Attribute> &attributes() const { return attrs; } preeditString()455 inline const QString &preeditString() const { return preedit; } 456 commitString()457 inline const QString &commitString() const { return commit; } replacementStart()458 inline int replacementStart() const { return replace_from; } replacementLength()459 inline int replacementLength() const { return replace_length; } 460 461 QInputMethodEvent(const QInputMethodEvent &other); 462 463 private: 464 QString preedit; 465 QList<Attribute> attrs; 466 QString commit; 467 int replace_from; 468 int replace_length; 469 }; 470 #endif // QT_NO_INPUTMETHOD 471 472 #ifndef QT_NO_DRAGANDDROP 473 474 class QMimeData; 475 476 class Q_GUI_EXPORT QDropEvent : public QEvent 477 // QT3_SUPPORT 478 , public QMimeSource 479 // END QT3_SUPPORT 480 { 481 public: 482 QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data, 483 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop); 484 ~QDropEvent(); 485 pos()486 inline const QPoint &pos() const { return p; } mouseButtons()487 inline Qt::MouseButtons mouseButtons() const { return mouseState; } keyboardModifiers()488 inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; } 489 possibleActions()490 inline Qt::DropActions possibleActions() const { return act; } proposedAction()491 inline Qt::DropAction proposedAction() const { return default_action; } acceptProposedAction()492 inline void acceptProposedAction() { drop_action = default_action; accept(); } 493 dropAction()494 inline Qt::DropAction dropAction() const { return drop_action; } 495 void setDropAction(Qt::DropAction action); 496 497 QWidget* source() const; mimeData()498 inline const QMimeData *mimeData() const { return mdata; } 499 500 // QT3_SUPPORT 501 const char* format(int n = 0) const; 502 QByteArray encodedData(const char*) const; 503 bool provides(const char*) const; 504 // END QT3_SUPPORT 505 #ifdef QT3_SUPPORT accept()506 inline void accept() { QEvent::accept(); } accept(bool y)507 inline QT3_SUPPORT void accept(bool y) { setAccepted(y); } data(const char * f)508 inline QT3_SUPPORT QByteArray data(const char* f) const { return encodedData(f); } 509 510 enum Action { Copy, Link, Move, Private, UserAction = Private }; 511 QT3_SUPPORT Action action() const; 512 inline QT3_SUPPORT void acceptAction(bool y = true) { if (y) { drop_action = default_action; accept(); } } setPoint(const QPoint & np)513 inline QT3_SUPPORT void setPoint(const QPoint& np) { p = np; } 514 #endif 515 516 517 protected: 518 friend class QApplication; 519 QPoint p; 520 Qt::MouseButtons mouseState; 521 Qt::KeyboardModifiers modState; 522 Qt::DropActions act; 523 Qt::DropAction drop_action; 524 Qt::DropAction default_action; 525 const QMimeData *mdata; 526 mutable QList<QByteArray> fmts; // only used for QT3_SUPPORT 527 }; 528 529 530 class Q_GUI_EXPORT QDragMoveEvent : public QDropEvent 531 { 532 public: 533 QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, 534 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove); 535 ~QDragMoveEvent(); 536 answerRect()537 inline QRect answerRect() const { return rect; } 538 accept()539 inline void accept() { QDropEvent::accept(); } ignore()540 inline void ignore() { QDropEvent::ignore(); } 541 accept(const QRect & r)542 inline void accept(const QRect & r) { accept(); rect = r; } ignore(const QRect & r)543 inline void ignore(const QRect & r) { ignore(); rect = r; } 544 545 #ifdef QT3_SUPPORT accept(bool y)546 inline QT3_SUPPORT void accept(bool y) { setAccepted(y); } 547 #endif 548 549 protected: 550 friend class QApplication; 551 QRect rect; 552 }; 553 554 555 class Q_GUI_EXPORT QDragEnterEvent : public QDragMoveEvent 556 { 557 public: 558 QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, 559 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); 560 ~QDragEnterEvent(); 561 }; 562 563 564 /* An internal class */ 565 class Q_GUI_EXPORT QDragResponseEvent : public QEvent 566 { 567 public: 568 QDragResponseEvent(bool accepted); 569 ~QDragResponseEvent(); 570 dragAccepted()571 inline bool dragAccepted() const { return a; } 572 protected: 573 bool a; 574 }; 575 576 577 class Q_GUI_EXPORT QDragLeaveEvent : public QEvent 578 { 579 public: 580 QDragLeaveEvent(); 581 ~QDragLeaveEvent(); 582 }; 583 #endif // QT_NO_DRAGANDDROP 584 585 586 class Q_GUI_EXPORT QHelpEvent : public QEvent 587 { 588 public: 589 QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos); 590 ~QHelpEvent(); 591 x()592 inline int x() const { return p.x(); } y()593 inline int y() const { return p.y(); } globalX()594 inline int globalX() const { return gp.x(); } globalY()595 inline int globalY() const { return gp.y(); } 596 pos()597 inline const QPoint& pos() const { return p; } globalPos()598 inline const QPoint& globalPos() const { return gp; } 599 600 private: 601 QPoint p; 602 QPoint gp; 603 }; 604 605 #ifndef QT_NO_STATUSTIP 606 class Q_GUI_EXPORT QStatusTipEvent : public QEvent 607 { 608 public: 609 QStatusTipEvent(const QString &tip); 610 ~QStatusTipEvent(); 611 tip()612 inline QString tip() const { return s; } 613 private: 614 QString s; 615 }; 616 #endif 617 618 #ifndef QT_NO_WHATSTHIS 619 class Q_GUI_EXPORT QWhatsThisClickedEvent : public QEvent 620 { 621 public: 622 QWhatsThisClickedEvent(const QString &href); 623 ~QWhatsThisClickedEvent(); 624 href()625 inline QString href() const { return s; } 626 private: 627 QString s; 628 }; 629 #endif 630 631 #ifndef QT_NO_ACTION 632 class Q_GUI_EXPORT QActionEvent : public QEvent 633 { 634 QAction *act, *bef; 635 public: 636 QActionEvent(int type, QAction *action, QAction *before = 0); 637 ~QActionEvent(); 638 action()639 inline QAction *action() const { return act; } before()640 inline QAction *before() const { return bef; } 641 }; 642 #endif 643 644 class Q_GUI_EXPORT QFileOpenEvent : public QEvent 645 { 646 public: 647 QFileOpenEvent(const QString &file); 648 QFileOpenEvent(const QUrl &url); 649 #ifdef Q_OS_SYMBIAN 650 QFileOpenEvent(const RFile &fileHandle); 651 #endif 652 ~QFileOpenEvent(); 653 file()654 inline QString file() const { return f; } 655 QUrl url() const; 656 bool openFile(QFile &file, QIODevice::OpenMode flags) const; 657 private: 658 QString f; 659 }; 660 661 #ifndef QT_NO_TOOLBAR 662 class Q_GUI_EXPORT QToolBarChangeEvent : public QEvent 663 { 664 public: 665 QToolBarChangeEvent(bool t); 666 ~QToolBarChangeEvent(); 667 toggle()668 inline bool toggle() const { return tog; } 669 private: 670 uint tog : 1; 671 }; 672 #endif 673 674 #ifndef QT_NO_SHORTCUT 675 class Q_GUI_EXPORT QShortcutEvent : public QEvent 676 { 677 public: 678 QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); 679 ~QShortcutEvent(); 680 key()681 inline const QKeySequence &key() { return sequence; } key()682 inline const QKeySequence &key() const { return sequence; } shortcutId()683 inline int shortcutId() { return sid; } shortcutId()684 inline int shortcutId() const { return sid; } isAmbiguous()685 inline bool isAmbiguous() { return ambig; } isAmbiguous()686 inline bool isAmbiguous() const { return ambig; } 687 protected: 688 QKeySequence sequence; 689 bool ambig; 690 int sid; 691 }; 692 #endif 693 694 #ifndef QT_NO_CLIPBOARD 695 class Q_GUI_EXPORT QClipboardEvent : public QEvent 696 { 697 public: 698 QClipboardEvent(QEventPrivate *data); 699 ~QClipboardEvent(); 700 data()701 QEventPrivate *data() { return d; } 702 }; 703 #endif 704 705 class Q_GUI_EXPORT QWindowStateChangeEvent: public QEvent 706 { 707 public: 708 QWindowStateChangeEvent(Qt::WindowStates aOldState); 709 QWindowStateChangeEvent(Qt::WindowStates aOldState, bool isOverride); 710 ~QWindowStateChangeEvent(); 711 oldState()712 inline Qt::WindowStates oldState() const { return ostate; } 713 bool isOverride() const; 714 715 private: 716 Qt::WindowStates ostate; 717 }; 718 719 #ifdef QT3_SUPPORT 720 class QMenuBar; 721 class Q_GUI_EXPORT QMenubarUpdatedEvent: public QEvent 722 { 723 public: 724 QMenubarUpdatedEvent(QMenuBar * const menBar); menuBar()725 inline QMenuBar *menuBar() { return m_menuBar; } 726 private: 727 QMenuBar *m_menuBar; 728 }; 729 #endif 730 731 #ifndef QT_NO_DEBUG_STREAM 732 Q_GUI_EXPORT QDebug operator<<(QDebug, const QEvent *); 733 #endif 734 735 #ifndef QT_NO_SHORTCUT 736 inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);} 737 inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);} 738 #endif // QT_NO_SHORTCUT 739 740 class QTouchEventTouchPointPrivate; 741 class Q_GUI_EXPORT QTouchEvent : public QInputEvent 742 { 743 public: 744 class Q_GUI_EXPORT TouchPoint 745 { 746 public: 747 TouchPoint(int id = -1); 748 TouchPoint(const QTouchEvent::TouchPoint &other); 749 ~TouchPoint(); 750 751 int id() const; 752 753 Qt::TouchPointState state() const; 754 bool isPrimary() const; 755 756 QPointF pos() const; 757 QPointF startPos() const; 758 QPointF lastPos() const; 759 760 QPointF scenePos() const; 761 QPointF startScenePos() const; 762 QPointF lastScenePos() const; 763 764 QPointF screenPos() const; 765 QPointF startScreenPos() const; 766 QPointF lastScreenPos() const; 767 768 QPointF normalizedPos() const; 769 QPointF startNormalizedPos() const; 770 QPointF lastNormalizedPos() const; 771 772 QRectF rect() const; 773 QRectF sceneRect() const; 774 QRectF screenRect() const; 775 776 qreal pressure() const; 777 778 // internal 779 void setId(int id); 780 void setState(Qt::TouchPointStates state); 781 void setPos(const QPointF &pos); 782 void setScenePos(const QPointF &scenePos); 783 void setScreenPos(const QPointF &screenPos); 784 void setNormalizedPos(const QPointF &normalizedPos); 785 void setStartPos(const QPointF &startPos); 786 void setStartScenePos(const QPointF &startScenePos); 787 void setStartScreenPos(const QPointF &startScreenPos); 788 void setStartNormalizedPos(const QPointF &startNormalizedPos); 789 void setLastPos(const QPointF &lastPos); 790 void setLastScenePos(const QPointF &lastScenePos); 791 void setLastScreenPos(const QPointF &lastScreenPos); 792 void setLastNormalizedPos(const QPointF &lastNormalizedPos); 793 void setRect(const QRectF &rect); 794 void setSceneRect(const QRectF &sceneRect); 795 void setScreenRect(const QRectF &screenRect); 796 void setPressure(qreal pressure); 797 QTouchEvent::TouchPoint &operator=(const QTouchEvent::TouchPoint &other); 798 799 private: 800 QTouchEventTouchPointPrivate *d; 801 friend class QApplication; 802 friend class QApplicationPrivate; 803 }; 804 805 enum DeviceType { 806 TouchScreen, 807 TouchPad 808 }; 809 810 QTouchEvent(QEvent::Type eventType, 811 QTouchEvent::DeviceType deviceType = TouchScreen, 812 Qt::KeyboardModifiers modifiers = Qt::NoModifier, 813 Qt::TouchPointStates touchPointStates = 0, 814 const QList<QTouchEvent::TouchPoint> &touchPoints = QList<QTouchEvent::TouchPoint>()); 815 ~QTouchEvent(); 816 widget()817 inline QWidget *widget() const { return _widget; } deviceType()818 inline QTouchEvent::DeviceType deviceType() const { return _deviceType; } touchPointStates()819 inline Qt::TouchPointStates touchPointStates() const { return _touchPointStates; } touchPoints()820 inline const QList<QTouchEvent::TouchPoint> &touchPoints() const { return _touchPoints; } 821 822 // internal setWidget(QWidget * awidget)823 inline void setWidget(QWidget *awidget) { _widget = awidget; } setDeviceType(DeviceType adeviceType)824 inline void setDeviceType(DeviceType adeviceType) { _deviceType = adeviceType; } setTouchPointStates(Qt::TouchPointStates aTouchPointStates)825 inline void setTouchPointStates(Qt::TouchPointStates aTouchPointStates) { _touchPointStates = aTouchPointStates; } setTouchPoints(const QList<QTouchEvent::TouchPoint> & atouchPoints)826 inline void setTouchPoints(const QList<QTouchEvent::TouchPoint> &atouchPoints) { _touchPoints = atouchPoints; } 827 828 protected: 829 QWidget *_widget; 830 QTouchEvent::DeviceType _deviceType; 831 Qt::TouchPointStates _touchPointStates; 832 QList<QTouchEvent::TouchPoint> _touchPoints; 833 834 friend class QApplication; 835 friend class QApplicationPrivate; 836 }; 837 838 #ifndef QT_NO_GESTURES 839 class QGesture; 840 class QGestureEventPrivate; 841 class Q_GUI_EXPORT QGestureEvent : public QEvent 842 { 843 public: 844 QGestureEvent(const QList<QGesture *> &gestures); 845 ~QGestureEvent(); 846 847 QList<QGesture *> gestures() const; 848 QGesture *gesture(Qt::GestureType type) const; 849 850 QList<QGesture *> activeGestures() const; 851 QList<QGesture *> canceledGestures() const; 852 853 #ifdef Q_NO_USING_KEYWORD setAccepted(bool accepted)854 inline void setAccepted(bool accepted) { QEvent::setAccepted(accepted); } isAccepted()855 inline bool isAccepted() const { return QEvent::isAccepted(); } 856 accept()857 inline void accept() { QEvent::accept(); } ignore()858 inline void ignore() { QEvent::ignore(); } 859 #else 860 using QEvent::setAccepted; 861 using QEvent::isAccepted; 862 using QEvent::accept; 863 using QEvent::ignore; 864 #endif 865 866 void setAccepted(QGesture *, bool); 867 void accept(QGesture *); 868 void ignore(QGesture *); 869 bool isAccepted(QGesture *) const; 870 871 void setAccepted(Qt::GestureType, bool); 872 void accept(Qt::GestureType); 873 void ignore(Qt::GestureType); 874 bool isAccepted(Qt::GestureType) const; 875 876 void setWidget(QWidget *widget); 877 QWidget *widget() const; 878 879 #ifndef QT_NO_GRAPHICSVIEW 880 QPointF mapToGraphicsScene(const QPointF &gesturePoint) const; 881 #endif 882 883 private: 884 QGestureEventPrivate *d_func(); 885 const QGestureEventPrivate *d_func() const; 886 887 friend class QApplication; 888 friend class QGestureManager; 889 }; 890 #endif // QT_NO_GESTURES 891 892 QT_END_NAMESPACE 893 894 QT_END_HEADER 895 896 #endif // QEVENT_H 897