QTアプリケーションでは、マウスクリックが正しく機能しません。

QTアプリケーションでは、マウスクリックが正しく機能しません。

デスクトップ環境でGnomeを実行していますが、マウスはうまくいきます。ところで、QTアプリケーションを使用しようとすると、マウスクリックが正しくできません。たとえば、テキストエディタでクリックして放すと、マウスボタンを押し続けているかのようにテキストが強調表示され始めます。登録できなかったようです。マウスアップイベント。

これが起こる理由や解決策のアイデアはありますか?

答え1

これが発生した場合は、タッチスクリーンをタップするだけで問題が解決することがわかりました。 Acer Spin 1でUbuntu 18.04を使用しています。これは通常FreeCADを使用すると発生します。

答え2

最後に普遍的なソリューションです!

問題はQtのタッチスクリーンサポートが原因で発生します。私がしたことは、次のようにxinputタッチスクリーンを無効にすることでした。

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DLL06E5:01 06CB:7A13 Touchpad             id=14   [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
[... bunch of keyboard stuff]

「ELANタッチスクリーン」入力が私たちが興味を持っている部分です。 IDは13です。だから:

$ xinput --disable 13

タッチスクリーン入力をオフにすると問題はもう発生しません。すでに実行中のQtアプリケーションを再起動する必要はありません。次の方法でタッチを再び有効にできます。

$ xinput --enable 13

このAskUbuntuの質問タッチをオフにする別の方法を示します。残念ながら、特定のアプリケーションやQtアプリケーションに対してのみタッチをオフにする方法がわかりません。

Xephyrに問題がない理由(以下の説明)は、Xephyrの起動時にタッチイベントをサポートしていないためです。


(この情報は、今後同様の問題を診断するのに役立つか、より詳細な解決策を見つけるのに役立つ可能性があるために保管しています。)

GnomeデスクトップでQt 5アプリケーションを実行しようとしたときにこの問題が発生しました。 XepyrセッションでQtアプリケーションを実行すると問題がなくなることがわかりました。

$ Xephyr :1 -screen 1240x800 &
$ DISPLAY=:1 path/to/executable

Xepyrは、他のXserverのクライアントとして機能できるXserverです。 (私もXnestを使ってみましたが、それもうまくいきました。)他のXserverでソフトウェアを実行すると、デフォルトのXserverで実行されているdestkop環境からデフォルトで隔離されます。

~のため一部ユースケースシナリオでは、これが可能な回避策である可能性があります。残念なことに、分離は、Xephyrで実行されているアプリケーションと他のアプリケーションの間に切り取り、貼り付けるには、かなりの接着剤を追加する必要があることを意味します。


lxqt-config私は問題を解決するためにいくつかのQt設定を変更できることを確認しようとしましたが、問題を解決した設定が見つかりませんでした。

アプリを実行してみましたが、-style=gtk動作ではなくビジュアルスタイルのみが変更されました。

答え3

chroot(Crouton)でXFCEを実行しているAsus Chromebookでも同じ問題が発生します。

私は「マウスアップ」イベントを処理するまでドルフィンの画面を繰り返し刺してマウスの設定を解除することができました。

答え4

この記事が役に立ちます。 https://blog.csdn.net/flfihpv259/article/details/90377827

cmakeを使用してCMakeLists.txtに次の2行を追加します。

set(CMAKE_BUILD_RPATH "lib:/usr/local/elevocsetting/lib")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -O3 -no-pie")

/usr/local/elevocsetting/lib私のインストールディレクトリは

-no-pieapplication/x-applicationMIMEタイプを作成できます。

関連情報