Signal sent by: emit
How the event is sent:
1: Window System events;
(The values listed in Qevent::type are best defined as values greater than 5000, such as: const Qevent::type Customevent_login = (qevent::type) 5001;)
2: Manually sent by Sendevent ()/postevent ();
(I prefer to use postevent, submission method, when processing to QT system decision, the way is mild, not easy to make mistakes; Sendevent is submitted, it has to be dealt with immediately, as if the concept of error is larger, more difficult to operate. )
The relationship between event and signal: There is no inevitable relationship between the two. When an event occurs, emit is sometimes invoked to send a signal in a handler function.
BOOL Qobject::event (qevent *e)
{
#if defined (check_null)
if (E = = 0)
Qwarning ("Qobject::event:null events are not permitted");
#endif
if (eventfilters) {//try Filters
if (Activate_filters (e))//stopped by a filter
return TRUE;
}
Switch (E->type ()) {
Case Qevent::timer:
TimerEvent ((qtimerevent*) e);
Returntrue;
Case qevent::childinserted:
Case qevent::childremoved:
Childevent ((qchildevent*) e);
Returntrue;
Default
Break
}
Returnfalse;
}
Qobject::event () was implemented in Qwidget, and the handling of the event became more complete.
BOOL Qwidget::event (qevent *e)
{
if (Qobject::event (e))
return TRUE;
Switch (E->type ()) {
Case Qevent::mousemove:
Mousemoveevent ((qmouseevent*) e);
Break
Case Qevent::mousebuttonpress:
Mousepressevent ((qmouseevent*) e);
Break
Case Qevent::mousebuttonrelease:
Mousereleaseevent ((qmouseevent*) e);
Break
Case Qevent::mousebuttondblclick:
Mousedoubleclickevent ((qmouseevent*) e);
Break
Case Qevent::wheel:
Wheelevent ((qwheelevent*) e);
if (! ((qwheelevent*) e)->isaccepted ())
return FALSE;
Break
Case Qevent::keypress: {
Qkeyevent *k = (qkeyevent *) e;
bool res = FALSE;
if (k->key () = = Key_backtab | |
(K->key () = Key_tab &&
(K->state () & Shiftbutton)) ) {
Qfocusevent::setreason (Qfocusevent::tab);
res = Focusnextprevchild (FALSE);
Qfocusevent::resetreason ();
else if (k->key () = = Key_tab) {
Qfocusevent::setreason (Qfocusevent::tab);
res = Focusnextprevchild (TRUE);
Qfocusevent::resetreason ();
}
if (res)
Break
Qwidget *w = this;
while (W) {
W->keypressevent (k);
if (k->isaccepted () | | w->istoplevel ())