2016-03-01 44 views
19

私は4Kモニターし、その痛みに開発しています...Qt 5.6で高dpiでシャープなUIを取得するには?

は、最後に私がQtDesignerを設定するために管理して、この問題をecountered:

あなたがQT_AUTO_SCREEN_SCALE_FACTOR=1を使用する場合やラジオボタンでアプリやその他の基本的なコンパイルウィジェットは、4kのスクリーン上で拡大表示されます。 それ以外の場合は、コントロールの寸法が正確で、予想どおり、シャープではなく、むしろピクセル化されています。

私は、200%DPIズームで4K画面上のWindows 10のホーム64ビット上で実行されているのQt 5.6 RCのmsvc2015 64ビットを使用して、私が使用している場合

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 

dcreenshot

を使用して同じ結果を達成するためにしようとしたのです

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling); 

コントロールがシャープで、テキストサイズは大丈夫ですが、すべてのディメンションがはるかに小さいです。

高DPI画面でコントロールをシャープにするにはどうすればよいですか?

+1

ウィジェット用のスタイルシートを使用しています:http://stackoverflow.com/questions/34407001/qt-and-high-dpi-screens/34408516#34408516または私はQML UIを使用しています。 – AlexanderVX

+1

私はあなたの返信を前に読んだことがありますが、これはすべての人が話したネイティブの高dpiサポートとは思われません。 IDはこれが自動であると予想していますが、なぜコントロールはピクセル化され、急激にレンダリングされませんか?これが標準的な動作であれば、どのようにして公式のすべてのソースから推奨できますか? –

+0

かなり大きなコードベースを持っているので、Qt 5.6に切り替えるのは急いではなく、5.5を十分に安定させると思っています。基本的にAA_EnableHighDpiScalingモードをどれくらいの長所を得ることができるのかが分かりました。あなたはQMLを使っていて、それは非常に異なるがシャープである。マインドスケールQML Rectangle属性。 https://doc-snapshots.qt.io/qt5-5.6/highdpi.html – AlexanderVX

答えて

0

QT_AUTO_SCREEN_SCALE_FACTORでは、フォントのポイントサイズは変更されず、元のピクセルから拡大されているだけなので、滑らかではなく、むしろ凹凸があります。

参考:http://doc.qt.io/qt-5.6/highdpi.html#high-dpi-support-in-qt あなたが使用することをQT_SCALE_FACTOR代わりにアプリを再スケールするために、ちょうどそのピクセルの大きさを変更する必要はありません

を「これはポイントサイズのフォントのサイズを変更しません」。 Qtのドキュメントとして

0

は言う:

Use QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors. 
QT_SCREEN_SCALE_FACTORS to set per-screen factors. 
QT_SCALE_FACTOR to set the application global scale factor. 

あなたはQtのCreatorがやっているやって試すことができます:

static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO"; 
if (!qEnvironmentVariableIsSet(ENV_VAR_QT_DEVICE_PIXEL_RATIO) 
     && !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR") 
     && !qEnvironmentVariableIsSet("QT_SCALE_FACTOR") 
     && !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) { 
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 
} 

基本的に重要なことは、最後の行QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);です。

関連する問題