Procházet zdrojové kódy

!92 支持高清屏
Merge pull request !92 from xdongwong/master

爬山虎 před 1 rokem
rodič
revize
686d36d2d8
1 změnil soubory, kde provedl 16 přidání a 5 odebrání
  1. 16 5
      src/main.cpp

+ 16 - 5
src/main.cpp

@@ -120,11 +120,18 @@ class MyApplication : public QApplication
 
 int main(int argc, char *argv[])
 {
-	//可以防止某些屏幕下的字体拥挤重叠问题。暂时屏蔽,不使用qt方法,使用windows自带方案
-	// 发现windows自带方案模糊。//发现下面打开后,在win10上反而效果不好,界面会变得很大,默认还是不开启的好。
-	//QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
-	//QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
-	//QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFloor);
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
+	QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
+#elif (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
+	#ifdef Q_OS_WIN
+		HDC hdc = CreateDC(L"display", NULL, NULL, NULL);
+		int ndpi = GetDeviceCaps(hdc, LOGPIXELSY);
+		qputenv("QT_SCALE_FACTOR", QString::number(ndpi / 96.0).toUtf8());
+	#endif // Q_OS_WIN
+#endif
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+	QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+#endif
 
 #ifdef Q_OS_MAC
     MyApplication a(argc, argv);
@@ -132,6 +139,10 @@ int main(int argc, char *argv[])
 	QApplication a(argc, argv);
 #endif
 
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+	a.setAttribute(Qt::AA_UseHighDpiPixmaps);
+#endif
+
 	//不能开启,开启后相对路径打开文件失败
 	//QDir::setCurrent(QCoreApplication::applicationDirPath());