qt获取操作系统字体缩放值

  如果在程序启动期间,修改了Linux系统的字体大小,此时是程序获取到的dpi依旧为程序启动前的dpi无法及时更新,除非重现启动程序。如果此时不想程序启动程序,可以使用下面的方法在程序中获取此时系统的dpi

if (qgetenv("DESKTOP_SESSION").contains("deepin") )
{
	FILE* file = popen("gsettings get com.deepin.xsettings scale-factor", "r");
	if (file)
	{
		char buf[16] = {0};
		if (fgets(buf, sizeof(buf), file) != 0)
		{
			scale = QString(buf).toDouble();
		}
		fclose(file);
	}

	if (qFuzzyIsNull(scale) || scale < 0)
		scale = 1.0;
}
else if((qgetenv("DESKTOP_SESSION").contains("gnome")|| qgetenv("DESKTOP_SESSION").contains("ubuntu")))
{
	FILE* file = popen("gsettings get org.gnome.desktop.interface text-scaling-factor", "r");
	if (file)
	{
		char buf[16] = {0};
		if (fgets(buf, sizeof(buf), file) != 0)
		{
			scale = QString(buf).toDouble();
		}
		fclose(file);
	}

	if (qFuzzyIsNull(scale) || scale < 0)
		scale = 1.0;
}

你可能感兴趣的:(Qt,linux,操作系统字体缩放)