![Qt アプリで HiDPI 問題を解決する方法](https://rvso.com/image/898943/Qt%20%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%20HiDPI%20%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
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 の詳細については、こちらをご覧ください:参考: