0

アプリケーションでこれを行うと、

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication* app = new QApplication(temp, NULL);

次に、フォントは高解像度ディスプレイで自動的に拡大されます。Windows 10 でフォント スケーリングを明示的に増やした場合も同様です ([設定] -> [システム] -> [カスタム スケーリング])。

ただし、Windows 10 で次のコードを 100% および 200% のスケーリングで実行すると、2 倍のサイズが返されません。

QFont font = QFont("arial", 10);
QFontMetrics fm(font);
int width = fm.width("abcdefgABCDEFG");

奇妙なことに、1ピクセルの違いしかありません。

100% --> width = 108 pixels
200% --> width = 109 pixels

何故ですか?QFontMetrics で Windows のスケーリングを考慮することはできますか? または、論理/物理 DPI を使用して、フォント サイズを 2 倍にする必要があると推測する必要がありますか?

ありがとう

4

1 に答える 1

1

カスタム描画アイテムを適切にスケーリングするには、QScreen::physicalDotPerInchプロパティを使用して、実際の描画に適用するスケーリング係数を実現します。

qreal myScale = pScreen->physicalDotPerInch() / constStandardPerInch;

PS質問はまだ修正する必要があります。

于 2017-11-06T20:39:13.077 に答える