Qt 和带触摸屏的双显示器

Qt 和带触摸屏的双显示器

我有一个基于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 OutputTouch 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);
        
        ...

希望这可以帮助

相关内容