使用DirectX全屏Qt键盘事件

时间:2010-12-14 17:17:47

标签: windows qt directx

我需要从Qt应用程序显示全屏DirectX窗口。

虽然Qt不再支持directX,但这应该很简单 - 只需覆盖QWidget,提供自己的paintEvent()并设置WA_PaintOnScreen属性。

但是当应用程序全屏时,DirectX正在抓取所有鼠标和键盘输入 - 所以退出应用程序的唯一方法是ctrl-alt-del。

PS。即使我编写了DirectX键盘处理程序,我仍然需要找到一种方法来创建正确的Qkeypress事件以传递给Qt。

有人这样做过吗?或者是否有一种简单的方法告诉DirectX不要抓住键盘?

2 个答案:

答案 0 :(得分:1)

据我所知,Direct3D无法获得键盘。你的问题更可能是因为全屏Direct3D是一个完全不同的野兽。像GDI(Qt可能用于渲染)这样的东西在默认情况下不起作用,运行时挂钩了很多信息。据推测,这些信息从未设法到达Qt。你有的选择是重新实现Qt使用Direct3D(灯塔项目?)渲染或使用伪全屏幕。这通常是通过创建一个窗口,其窗口的大小与屏幕大小相同,然后正确定位。

后者可能是最简单的解决方案......

答案 1 :(得分:0)

尝试在Qt 4.3-4.5或类似的东西中获得D3DWidget类似的东西,但它从未被稳定或批准,后来甚至被移除。

也许确实灯塔是一个选项(中等大小的工作,基本上将OS / DX的东西链接到Qt的东西)或者你可以看看旧的Qt分支中的旧的direct3D代码。我从来没有使用它,它可能不打算用于最新版本的Qt,但它总比没有好。