Qtとタッチスクリーンを備えたデュアルモニター

Qtとタッチスクリーンを備えたデュアルモニター

Qtベースのプログラム(eglfsプラットフォームを使用)と2つのモニター(1つはLVDS、もう1つはHDMI経由で接続)があります。 LVDSモニターはタッチスクリーンです。 HDMI画面はLVDS画面の右側にあり、どちらも1024×768の解像度を持っています。 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 windowなど)に基づいていませんが、私の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);
        
        ...

役に立ったことを願って

おすすめ記事