我运行 Gnome 作为我的桌面环境,并且鼠标工作正常。但是,当我尝试使用 QT 应用程序时,鼠标单击无法正常工作。例如,如果我在文本编辑器中单击并释放,它会开始突出显示文本,就好像我仍在按住鼠标按钮一样。就好像它没有注册鼠标向上事件一样。
任何想法为什么会发生这种情况,或者如何解决它?
最后给出一个通用的解决方案!
\n\n该问题是由 Qt 对触摸屏的支持引起的。我所做的是使用xinput禁用触摸屏:
$ xinput --list\n\xe2\x8e\xa1 Virtual core pointer id=2 [master pointer (3)]\n\xe2\x8e\x9c \xe2\x86\xb3 Virtual core XTEST pointer id=4 [slave pointer (2)]\n\xe2\x8e\x9c \xe2\x86\xb3 DLL06E5:01 06CB:7A13 Touchpad id=14 [slave pointer (2)]\n\xe2\x8e\x9c \xe2\x86\xb3 ELAN Touchscreen id=13 [slave pointer (2)]\n\xe2\x8e\xa3 Virtual core keyboard id=3 [master keyboard (2)]\n[... bunch of keyboard stuff]\nRun Code Online (Sandbox Code Playgroud)\n\n“ELAN Touchscreen”输入是我们关心的。它的 id 是 13。所以:
\n\n$ xinput --disable 13\nRun Code Online (Sandbox Code Playgroud)\n\n关闭触摸屏输入后,该问题不再发生。我不必重新启动已经运行的 Qt 应用程序。可以通过以下方式重新启用触摸:
\n\n$ xinput --enable 13\nRun Code Online (Sandbox Code Playgroud)\n\n这个 AskUbuntu 问题展示了关闭触摸的其他方法。不幸的是,我不知道有什么方法可以仅针对特定应用程序或仅针对 Qt 应用程序关闭触摸。
\n\nXephyr 没有出现问题的原因(如下所述)是因为 Xephyr 启动时不支持触摸事件。
\n\n(我保留这些信息是因为它可以帮助人们将来诊断类似的问题,或者帮助人们寻找更细粒度的解决方案。)
\n\n我在尝试在 Gnome 桌面下运行 Qt 5 应用程序时遇到了这个问题。我发现如果我在 Xephyr 会话中运行 Qt 应用程序,问题就会消失:
\n\n$ Xephyr :1 -screen 1240x800 &\n$ DISPLAY=:1 path/to/executable\nRun Code Online (Sandbox Code Playgroud)\n\nXephyr 是一个 Xserver,可以充当另一个 Xserver 的客户端。(我也尝试过 Xnest,它也有效。)通过在不同的 Xserver 中运行该软件,它基本上与默认 Xserver 上运行的 destkop 环境隔离。
\n\n对于某些用例场景,这可能是一个可用的解决方法。不幸的是,隔离意味着在 Xephyr 中运行的应用程序和其他应用程序之间的剪切和粘贴需要添加一些大量的粘合剂。
\n\n我尝试lxqt-config查看是否可以更改一些 Qt 设置来解决问题,但没有找到解决问题的设置。
我还尝试启动应用程序,-style=gtk但这只会改变视觉风格,而不会改变行为。