Qt 앱의 HiDPI 문제를 해결하는 방법

Qt 앱의 HiDPI 문제를 해결하는 방법

xrandr --dpi 166나는 최근에 실행 중인 새 노트북에 명령을 사용하기 시작했습니다.우분투 16.04.3 64비트그렇지 않으면 시스템이 자동으로 96dpi를 사용한다는 것을 알게 된 후입니다.

그러나 이렇게 높은 dpi 설정으로 인해 메뉴와 도구 모음이 매우 커집니다.Qt 앱에서만나는 Master PDF Editor, digiKam 및 Krita(후자의 두 개는 AppImage 형식임)와 같은 것을 가지고 있습니다. Java 또는 WINE 환경에서 실행되는 다른 앱은 이러한 문제를 일으키지 않습니다.

Qt 앱의 특정 dpi 설정을 수동으로 입력하는 방법이나 이 문제를 해결하는 다른 방법을 찾고 싶습니다.

Qt 앱에 대한 dpi 설정을 전역적으로 지정할 수 있는 방법이 없다면, xrandr --dpi 96그러한 앱 이전에 입력하고 이후에 초기 dpi 설정을 복원하는 간단한 래퍼 스크립트도 가능합니다.

답변1

내가 찾은 완벽하지 않은 임시 솔루션은 문제의 앱 실행 파일 대신 관련 .desktop 파일에서 사용할 수 있는 다음과 같은 간단한 래퍼 bash 스크립트입니다 masterpdfeditor4.

#!/bin/bash
HiDPI="$(xdpyinfo | grep dots | awk -F'x' '{print $2}' | awk -F' ' '{print $1}')"
if [[ ! $HiDPI = 96 ]]
then
    xrandr --dpi 96
    masterpdfeditor4 "$@"
    xrandr --dpi $HiDPI
else
    masterpdfeditor4 "$@"
fi

이렇게 하면 해당 앱 하나를 열고 닫은 경우에만 원래 dpi 설정이 복원됩니다. 또는 해당 앱이 두 개 이상 실행되는 경우 첫 번째 앱이 마지막으로 닫히는 경우에만 복원됩니다.

둘째, 메뉴와 도구 모음 이외의 일부 GUI 요소는 이런 방식으로 수정될 수 없습니다(예: Krita 작업 공간의 커서 크기...).

답변2

QT_AUTO_SCREEN_SCALE_FACTOR일부 Qt 환경 변수, 즉 및 를 조정하여 꽤 좋은 결과를 얻을 수 있었습니다 QT_SCALE_FACTOR. 귀하의 사례에 더 잘 맞는 값을 직접 선택할 수 있습니다.

$ QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_SCALE_FACTOR=1.1 virtualbox

Qt 변수에 대한 자세한 내용은 여기에서 확인할 수 있습니다.https://doc.qt.io/qt-6.2/highdpi.html

관련 정보