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;
}