Реализация собственных классов событий

   
На этом шаге рассмотрим реализацию собственных классов событий.

   
Если вам не будет хватать событий, предоставляемых Qt, и понадобится определить свое собственное, то необходимо поступить так, как это сделано для всех классов событий Qt, а именно унаследовать базовый класс для всех событий QEvent. В конструкторе QEvent нужно передать идентификационный номер для типа события, который должен быть больше чем QEvent::User, для того чтобы не создать конфликт с уже определенными типами. Значение QEvent::User равно 1000 (см. табл. 1). В созданном событии можно реализовать все необходимые вам методы для передачи дополнительной информации. Например:

class MyEvent : public QEvent {
public:
    MyEvent() : QEvent((Type)1200)
    {
    }
    QString info()
    {
        return "CustomEvent";
    }
};

   
Свои собственные события можно высылать с помощью методов QCoreApplication:: sendEvent() или QCoreApplication::postEvent(), а получать методами QObject::event() или QObject::customEvent().

Таблица 1. Некоторые типы событий

Константа Значение Константа Значение
None 0 Polish 75
Timer 1 LayoutRequest 76
MouseButtonPress 2 UpdateRequest 77
MouseButtonRelease 3 UpdateLater 78
MouseButtonDblClick 4 ContextMenu 82
MouseMove 5 InputMethod 83
KeyPress 6 AccessibilityPrepare 86
KeyRelease 7 TabletMove 87
FocusIn 8 LocaleChange 88
FocusOut 9 LanguageChange 89
Enter 10 LayoutDirectionChange 90
Leave 11 Style 91
Paint 12 TabletPress 92
Paint 13 TabletRelease 93
Resize 14 IconDrag 96
Create 15 FontChange 97
Destroy 16 EnabledChange 98
Show 17 ActivationChange 99
Hide 18 StyleChange 100
Close 19 IconTextChange 101
Quit 20 ModifiedChange 102
ParentChange 21 WindowBlocked 103
ThreadChange 22 WindowUnblocked 104
WindowActivate 24 WindowStateChange 105
WindowDeactivate 25 MouseTrackingChange 109
ShowToParent 26 ToolTip 110
HideToParent 27 WhatsThis 111
Wheel 31 StatusTip 112
WindowTitleChange 33 ActionChanged 113
WindowIconChange 34 ActionAdded 114
ApplicationWindowIconChange 35 ActionRemoved 115
ApplicationFontChange 36 FileOpen 116
ApplicationLayoutDirectionChange 37 Shortcut 117
ApplicationPaletteChange 38 WhatsThisClicked 118
PaletteChange 39 AccessibilityHelp 119
Clipboard 40 ToolBarChange 120
Speech 42 ApplicationActivated 121
SockAct 50 ApplicationDeactivated 122
ShortcutOverride 51 QueryWhatsThis 123
DeferredDelete 52 EnterWhatsThisMode 124
DragEnter 60 LeaveWhatsThisMode 125
DragMove 61 ZOrderChange 126
DragLeave 62 HoverEnter 127
Drop 63 HoverLeave 128
DragResponse 64 HoverMove 129
ChildAdded 68 AccessibilityDescription 130
ChildPolished 69 ParentAboutToChange 131
ChildRemoved 71 WinEventAct 132
ShowWindowRequest 73 MenubarUpdated 153
PolishRequest 74 User 1000

   
На следующем шаге рассмотрим переопределение метода event().

Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий