![Qt 和带触摸屏的双显示器](https://linux22.com/image/12639/Qt%20%E5%92%8C%E5%B8%A6%E8%A7%A6%E6%91%B8%E5%B1%8F%E7%9A%84%E5%8F%8C%E6%98%BE%E7%A4%BA%E5%99%A8.png)
我有一个基于Qt的程序(使用eglfs平台),和2个显示器,一个LVDS,另一个通过HDMI连接。 LVDS 监视器是触摸屏。 HDMI屏幕位于LVDS屏幕的右侧,两者的分辨率均为1024x768。如果我触摸LVDS的(X;Y)位置,系统认为我触摸了(X*2;Y)。我尝试过这个命令:
xinput set-prop "eGalax Inc. eGalaxTouch EXC3000-5207-45.00.00" --type=float "Coordinate Transformation Matrix" 0.5 0 0 0 1 0 0 0 1
如果软件不是基于 Qt(如 xterm 窗口),则此方法有效,但我的 Qt 软件仍然错误。有什么问题,我该如何解决?
答案1
如果您使用 eglfs,我相信您可能需要通过传递到环境变量的 JSON 文件来配置一些屏幕位置/位置QT_QPA_EGLFS_KMS_CONFIG
。
在这里查看关于eglfs的文档https://doc.qt.io/qt-5/embedded-linux.html
对于屏幕位置和触摸位置,请阅读Display Output
和Touch input in systems with multiple screens on KMS/DRM
。
另一方面,如果您不想一直为应用程序定义外部变量,您可以在QGuiApplication app(argc, argv);
调用之前在 C/C++ 主程序上执行以下操作。
int main(int argc, char* argv[])
{
qputenv("QT_QPA_EGLFS_KMS_CONFIG", <path to your qpa json file>);
QGuiApplication app(argc, argv);
...
希望这可以帮助