Qt 5.7 では、高 DPI サポートが改善されたと主張しています。最新の Qt では、次のようなアプリ スターターを作成できます。
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
return app.exec();
}
高 DPI での実行時に UI が自動的にスケーリングされることを期待していますが、スケーリングが必ずしも期待どおりに機能するとは限りません。少なくとも、Linux では UI をスケーリングしません。私が見ているのは、レイアウトが拡大されていることですが、フォントは、Qt Creator がフォーム レイアウト ツールで割り当てたサイズで、元の場所にとどまっています。
ある要素のフォントを大きくしたい場合、それをフォームのデザイン画面で設定すると、「2 倍の大きさ」とは言えません。代わりに、フォント プロパティに絶対ポイント サイズを挿入します。
QMessageBox の静的メソッドも同様のようです。静的な QMessageBox などQMessageBox::info
を表示し、そのテキストとアイコンは、高 dpi を補うために拡大されません。
では、Creator で標準 DPI で設計された Qt アプリケーションを、高 DPI 環境、フォント、QMessageBoxes などに自動的に調整できるようにするには、正確に何をすればよいのでしょうか。
QMessageBox に大きなフォントを使用するようにアプリケーションのスタイル シートを設定することで、ある程度のトラクションが得られました。しかし、それは醜く感じられ、自動的にトリガーする方法がわかりません。
編集:
環境変数の手動設定
declare -x QT_SCALE_FACTOR=2
私が探している種類の動作を呼び出すようです。ただし、高 DPI 環境でのみ、できればプログラム自体の中で自動的に行う方法 . ( setenv (3)
Linuxでも動作する可能性があると思います)