【发布时间】:2015-04-13 13:34:59
【问题描述】:
我试图了解 Qts 平台处理几个小时,但我不明白。对于我的热键处理,我目前混合使用 X11extras 来获取显示,xlib 用于键转换,xcb 用于 Qt 本机事件处理。三个要链接的库。无证的 QPA 在哪里发挥作用?现在我想知道这是否有必要。我需要在这里澄清一下。我正在使用 qt 5.4。未来的路在何方?
【问题讨论】:
-
这不应该在 Qt 开发者列表中吗?
我试图了解 Qts 平台处理几个小时,但我不明白。对于我的热键处理,我目前混合使用 X11extras 来获取显示,xlib 用于键转换,xcb 用于 Qt 本机事件处理。三个要链接的库。无证的 QPA 在哪里发挥作用?现在我想知道这是否有必要。我需要在这里澄清一下。我正在使用 qt 5.4。未来的路在何方?
【问题讨论】:
对于 Qt,除非您使用的是本机窗口,否则您不需要对关键事件进行任何本机平台编码。阅读QEvent 和QWidget 中的事件函数。
如果您需要直接访问原始 X11 事件,请使用 QWidget::nativeEvent() 或 QCoreApplication::installNativeEventFilter()。应用程序级别的原生事件过滤器针对每个事件进行处理,并且比子类化QWidget 和重新实现nativeEvent() 对性能的影响更大。
如果您需要将原生窗口作为子小部件嵌入,请阅读 QWindow::fromWinId() 和 QWidget::createWindowContainer()。
【讨论】: