Шаг 127.
Библиотека Qt.
Реализация собственных классов событий

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

    Если вам не будет хватать событий, предоставляемых 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().




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