如果在程序启动期间,修改了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;
}