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

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

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

КонстантаЗначениеКонстантаЗначение
None0Polish75
Timer1LayoutRequest76
MouseButtonPress2UpdateRequest77
MouseButtonRelease3UpdateLater78
MouseButtonDblClick4ContextMenu82
MouseMove5InputMethod83
KeyPress6AccessibilityPrepare86
KeyRelease7TabletMove87
FocusIn8LocaleChange88
FocusOut9LanguageChange89
Enter10LayoutDirectionChange90
Leave11Style91
Paint12TabletPress92
Paint13TabletRelease93
Resize14IconDrag96
Create15FontChange97
Destroy16EnabledChange98
Show17ActivationChange99
Hide18StyleChange100
Close19IconTextChange101
Quit20ModifiedChange102
ParentChange21WindowBlocked103
ThreadChange22WindowUnblocked104
WindowActivate24WindowStateChange105
WindowDeactivate25MouseTrackingChange109
ShowToParent26ToolTip110
HideToParent27WhatsThis111
Wheel31StatusTip112
WindowTitleChange33ActionChanged113
WindowIconChange34ActionAdded114
ApplicationWindowIconChange35ActionRemoved115
ApplicationFontChange36FileOpen116
ApplicationLayoutDirectionChange37Shortcut117
ApplicationPaletteChange38WhatsThisClicked118
PaletteChange39AccessibilityHelp119
Clipboard40ToolBarChange120
Speech42ApplicationActivated121
SockAct50ApplicationDeactivated122
ShortcutOverride51QueryWhatsThis123
DeferredDelete52EnterWhatsThisMode124
DragEnter60LeaveWhatsThisMode125
DragMove61ZOrderChange126
DragLeave62HoverEnter127
Drop63HoverLeave128
DragResponse64HoverMove129
ChildAdded68AccessibilityDescription130
ChildPolished69ParentAboutToChange131
ChildRemoved71WinEventAct132
ShowWindowRequest73MenubarUpdated153
PolishRequest74User1000

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

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



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

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