Qt アプリで HiDPI 問題を解決する方法

Qt アプリで HiDPI 問題を解決する方法

xrandr --dpi 166私は最近、新しいノートパソコンでこのコマンドを使い始めましたUbuntu 16.04.3 64ビットそうでない場合、システムが自動的に 96 dpi を使用することに気付きました。

しかし、このような高dpi設定ではメニューやツールバーが非常に大きくなります。Qtアプリのみ私が持っているのは、Master PDF Editor、digiKam、Krita などです (最後の 2 つは 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

これにより、このようなアプリを 1 つ開いて閉じた場合にのみ元の dpi 設定が復元されます。また、このようなアプリを複数起動した場合は、最初のアプリが最後に閉じられた場合にのみ元の 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 vars の詳細については、こちらをご覧ください:参考:

関連情報