데스크탑 환경으로 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 터치스크린" 입력이 우리가 관심을 두고 있는 부분입니다. 아이디는 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에 다음 두 줄을 추가합니다.
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-pie
application/x-application
MIME 유형을 생성할 수 있습니다.