0

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でも動作する可能性があると思います)

4

1 に答える 1