在X11上,Qt轮询事件的xlib(Qt4)或XCB(Qt5)。随着Xlib中,这将是XNextEvent例行()函数和其他相关的:
http://www.x.org/archive/X11R7.5/doc/man/man3/XMaskEvent.3.html
如果使用grep命令尽管对于“XNextEvent例行” Qt的源代码,你可以找到使用它的地方。例如,在Qt的4.8.4来源:
$ grep -r XNextEvent
tools/qvfb/x11keyfaker.cpp: XNextEvent(dpy, &event);
src/plugins/platforms/xlib/qxlibscreen.cpp: XNextEvent(mDisplay->nativeDisplay(), &event);
src/gui/kernel/qwidget_x11.cpp: XNextEvent(X11->display, &ev);
src/gui/kernel/qguieventdispatcher_glib.cpp: XNextEvent(X11->display, &event);
src/gui/kernel/qeventdispatcher_x11.cpp: XNextEvent(X11->display, &event);
src/gui/kernel/qapplication_x11.cpp: XNextEvent(X11->display, &nextEvent);
随着XCB,有xcb_wait_for_event()。
一旦Qt发生事件,它就可以开始通过窗口小部件层次结构和QML分派它。
这仅适用于X11(意思是Unix和Linux)。其他平台有不同的向应用程序发送事件的方式。
除了查看可能相当想象的Qt源代码之外,还可以使用一些外部工具(如Windows上的Spy)来查看Qt应用程序中的内容。 – ixSci 2013-02-18 06:54:38
谢谢ixSci – 2013-02-18 07:00:56
这是相当古老的信息。由于Qt 4.4窗口小部件不是原生Windows窗口。 – 2013-02-18 08:35:31