Qt and Vulkan work fine.
Vulkan and Steam work fine.
Qt and Steam do not work fine.
Qt does some kind of weird behavior when inspecting the display layout that creates an early xcb window sized to the whole display. Steam catches this behavior and generates a Vulkan frame and adds input hooks to the early surface. Qt destroys this surface and generates a new one for your application’s widgets…
I can’t seem to get Steam to behave correctly with Vulkan, so I’ve ripped Qt Vulkan out and replaced it with a fully hand-rolled renderer on top of GLFW3. I’m still keeping my signals though, Qt can stay for that.