Qt関連の設定

概要

ChoreonoidではGUIの実装にQt(キュート)というフレームワークを利用しています。QtはWindowsやLinuxをはじめとするマルチプラットフォームに対応するフレームワークで、完成度も高く、Choreonoidもこれを用いることでマルチプラットフォーム対応の高機能なGUIを効率的に実装しています。

ただしQtはマルチプラットフォーム対応のため、GUIの描画に独自の実装を用いているところもあります。このため、OS標準の設定機能ではGUIで使用するフォントや描画スタイルなどを設定できない場合があります。本節ではそのような場合に使用可能なQt独自の設定方法について解説します。GUIについてデフォルトのフォントや外観で問題ない場合はよいのですが、もし設定を変更したくなった場合は、こちらの方法を試してみてください。

フォントの設定

ChoreonoidのようなGUIのアプリケーションを快適に使用するにあたっては、フォントのタイプや種類が違和感のないものになっていることが望ましいです。通常はOSで標準のフォントが設定されていて、アプリケーションでもそれが使用されますし、問題があればOS標準の方法で設定を変更することができます。しかしながら、Qtで構築されたアプリケーションでは、OS標準とは異なる方法でフォントが設定されている場合があります。

当方で調査したところ、Windowsで使用する場合や、Ubuntu LinuxでQtバージョン6(Qt6)を使用する場合は、OS標準のフォントが使用されるようです。一方で、Ubuntu Linux 20.04以降でQtバージョン5(Qt5)を使用する場合は、Qt用に独自に設定されたフォントが使用されるようです。(Ubuntu 20.04については、リリース当初はOSの標準フォントが使用されていたようですが、2021年以降のアップデートで仕様が変更されたようです。)

OS標準のフォントが使用される場合は特に問題ないかと思われます。もし問題がある場合はOSのフォント設定を変更するようにしてください。一方で、Qtで独自に設定されたフォントが使用される場合は、OS標準のものとは異なるタイプやサイズのフォントで表示されることもあり、違和感や使い勝手の悪さを感じることもあるかもしれません。そのような場合は、以下では紹介するQt独自の方法でフォントの調整をするようにしてください。

環境変数 QT_FONT_DPI によるフォントサイズの調整

フォントのサイズを調整する場合、QT_FONT_DPI という環境変数を使用することができます。通常この変数にはディスプレイのDPI値を設定しますが、その値を適当に変更することで、画面に表示される際の実際のサイズを調整することができます。この方法はQt5、Qt6の両方で利用可能です。

例えばChoreonoid起動時に以下のように入力します。

QT_FONT_DPI=96 choreonoid

するとDPIが96のディスプレイでQt標準のサイズで表示されるように実際のフォントサイズが調整されます。この値でフォントが小さければ、設定するDPI値を大きめにします。例えば以下のようにすればフォントが先程よりも若干大きく表示されるはずです。

QT_FONT_DPI=120 choreonoid

この値は自由に設定できるようですので、見やすいフォントサイズになるように調整してください。

適切な値がみつかったら、

export QT_FONT_DPI=120

を実行しておけば、それ以降はchoreonoid起動の度にこの記述を入れる必要はなくなります。ただしこの場合は他にQtを利用したアプリケーションがあればそちらにも影響しますので、ご注意ください。それで問題なければ、.profile などに記述しておくのもよいかと思います。

qt5ctによるフォントの設定

Ubuntu Linux 20.04以降でQt5を使用する場合は、Qtの設定を行うためのqt5ctというツールが用意されていて、これを用いることでフォントの設定を行うことも可能です。その場合は、フォントサイズだけでなく、フォントの種類も変更することができます。

このツールを利用するにあたっては、まずqt5ctのパッケージをインストールします。

sudo apt install qt5ct

そして、"QT_QPA_PLATFORMTHEME" という環境変数に "qt5ct" を設定しておきます。

export QT_QPA_PLATFORMTHEME=qt5ct

このツールを常用する場合はやはり .profile などに上記コマンドを記述しておくとよいでしょう。

インストール・設定が完了したら、以下のコマンドで設定ツールを起動できます。

qt5ct

このツールはデスクトップ環境のアプリケーションメニューにおいて "Qt5 Settings" といった名前で登録されるようですので、そちらのメニューから起動してもOKです。

qt5ctのウィンドウには上部にタブがあり、タブごとに様々な項目の設定ができるようになっています。その中の "Fonts" というタブを選択することで、以下の画面に示すようにフォントの設定ができます。

../_images/qt5ct-font.png

設定を変更したらqt5ctのウィンドウの下部にある "Apply" または "OK" を押せば、その場で設定が反映されます。

なお、qt5ctによる設定は上述のQT_FONT_DPIの設定と併用できます。使用するディスプレイにもよるかと思いますが、基本的にはQT_FONT_DPIの値を96に設定すると、qt5ctで設定したサイズになるようです。

注釈

Ubuntu 18.04のようにデフォルトでOSの標準フォントが使用される環境でも、qt5ctを導入することが可能です。その場合は設定がqt5ctによるものに切り替わります。

補足: UbuntuにおけるOS標準フォントの設定

OSの標準フォントがQtのアプリでも使用される環境では、(QT_FONT_DPIやqt5ctを使用しなければ)OS標準のフォント設定を変更すれば、それがChoreonoidにも反映されます。ただしUbuntuではOS標準フォントの設定が通常の設定パネルに含まれておらず、どこで設定をすれば分かりにくいかと思います。これについては "gnome-tweaks" というオプションのツールから設定することが可能ですので、以下ではその使用方法を紹介します。

gnome-tweaks は以下でインストールできます。

sudo apt install gnome-tweaks

インストール後は以下のコマンドで起動できます。

gnome-tweaks

このツールの設定項目に「フォント」が含まれています。以下にその画面を示します。

../_images/gnome-tweaks-font.png

これによってOS標準フォントの設定を行うことができます。

外観の設定

QtはGUIの外観を設定する機能も有しており、Choreonoidにおいてもこれを利用することが可能です。通常はデフォルトの外観から変更する必要はありませんが、この機能はQtを利用する利点のひとつでもあるので、紹介します。

スタイルについて

外観の設定で中心となる概念に「スタイル」があります。これはGUI部品の描画プログラムに対応するもので、まずはこのスタイルで基本的な外観が決まります。スタイルは通常何種類か用意されているので、まずはその中から希望のものを選択します。その上で更なる設定項目として色やフォント、アイコン等を変更することが可能となっています。

Windowsではデフォルトで以下のスタイルが使えるようです。

  • windowsvista

  • Windows

  • Fusion

デフォルトではwindowsvistaが使用されます。これは現行のWindowsのGUIと同様の外観になるものです。

UbuntuではQtをインストールすると以下のスタイルが使用できます。

  • Windows

  • Fusion

こちらはデフォルトでFusionが使用されます。これはQt独自のスタイルです。

UbuntuでQt5を使用する場合は、qt5-style-plugins というパッケージをインストールすることで、以下のスタイルも利用できるようになります。

  • cleanlooks

  • gtk2

  • cde

  • motif

  • plastique

実際に利用できるスタイルは、Choreonoidの "--list-qt-styles" オプションで確認できます。Choreonoidを以下のように実行してください。

choreonoid --list-qt-styles

するとChoreonoidのウィンドウが起動する代わりに、コンソールに利用できるスタイルの一覧が出力されます。

スタイルの変更

スタイルの変更はChoreonoid起動時のコマンドラインオプション "-style" もしくは環境変数 "QT_STYLE_OVERRIDE" によって行うこともできます。コマンドラインオプションを使う場合は、例えば以下のようにしてChoreonoidを起動します。

choreonoid -style スタイル名

ちなみに "--style スタイル名" や "-style=スタイル名" という書き方も有効なようです。

環境変数を使用する場合は、例えばLinuxでしたら、予め

export QT_STYLE_OVERRIDE=スタイル名

として設定しておけば、それ以降のChoreonoidの起動で常に設定したスタイルが有効となります。

なお、上記のqt5ctが使える環境では、qt5ctの"Appearance"タブからもスタイルの変更を行うことができます。 qt5ctでは基本となるスタイル設定以外にも様々な外観要素を設定することができ、希望の外観に近づけることができます。

高DPIディスプレイへの対応

Qtアプリでは、高DPIディスプレイに対応するため、GUIにスケーリングを適用することができます。本節ではこの機能について紹介します。

高DPIディスプレイとは

高DPIディスプレイ(High DPI Display)とは、ピクセル密度が従来の標準的なディスプレイよりも大幅に細かいディスプレイを意味します。ピクセル密度は一般的に1インチの幅に存在するドットの数で表現され、これをDPI(Dots per inch)と呼びます。

例えば、ノートPCに4K解像度のディスプレイが搭載されている場合は、高DPIに該当することになるでしょう。同じ4Kディスプレイでも、デスクトップ用の大型のものを使う場合は、高DPIには当てはまらないかもしれません。

問題は、従来標準的な解像度を想定して開発されたアプリケーションを、高DPIのディスプレイに表示して使用する場合に発生します。従来Windowsでは96DPIが標準とされていました。一方で14インチ程度の4Kディスプレイの場合、DPIは300程度になります。この場合はDPIが想定よりも細かすぎて、アプリケーションの文字やアイコン、画像などがとても小さく表示されてしまい、そのままでは見づらいですし操作もしにくくなってしまいます。

これに対処するためには、DPIの増加に応じて文字やアイコン、画像の拡大をすることが必要となります。従来のOSやアプリケーションではこれに対応できる設計にはなっていませんでしたが、最近のOSやアプリケーションではこれが可能となりつつあります。つまり、ピクセル密度に応じて描画内容を拡大縮小(スケーリング)して、ディスプレイに実際に表示される際の大きさを適切にすればよいわけです。

Qtの高DPIディスプレイ対応機能

Qtもバージョン5.6から高DPIディスプレイ対応のためのスケーリング機能が備わりました。以下にその説明があります。

この機能により、標準的な解像度を想定して実装されたアプリケーションであっても、高DPIディスプレイ環境ではQtの側で自動的に表示サイズを拡大し、標準的な解像度で使用する場合と同様の表示や操作が可能となっています。

これで問題なく表示や操作ができる場合はよいのですが、もし表示や操作が想定どおりにならない場合は、以下の環境変数でこの機能の制御を行うことができます。

  • QT_AUTO_SCREEN_SCALE_FACTOR

  • QT_SCALE_FACTOR

  • QT_SCREEN_SCALE_FACTORS

これらの変数はOSによっては自動で設定されるようですが、手動で上書きを行うことで、挙動を変えることもできます。基本的には QT_SCALE_FACTOR に表示の拡大率が入っていて、通常はこれが 1 になりますが、高DPIディスプレイに対しては2になります。後者の場合、アプリケーションの表示が元の2倍のサイズに拡大して表示されます。もしこれが問題になる場合は、QT_SCALE_FACTOR に 1 を設定すれば、この機能を無効にできます。

各変数の詳細については上記のページをご参照ください。