[DTK] 在Qt程序中如何获取当前深度桌面的屏幕缩放率?
Tofloor
poster avatar
瞿华(roy)
deepin
2022-01-15 21:31
Author

我是小熊猫C++的开发者。这是一个使用Qt开发的C/C++ IDE,主要面向编程初学者和信息学竞赛参赛者。

其核心编辑器中的内容是先画在一张图片上,然后再渲染到屏幕上的。在深度Linux下,如果把桌面的“屏幕缩放”设置成1.25,就会导致图片渲染到屏幕上时被放大,导致内容显示模糊。

所以我想问一下,该怎么样才能拿到当前的“屏幕缩放”参数?

Reply Favorite View the author
All Replies
deepin-superuser
deepin
2022-01-15 22:11
#1
gsettings get com.deepin.xsettings scale-factor

或者使用 dbus 获取

busctl --user call com.deepin.daemon.Appearance /com/deepin/daemon/Appearance com.deepin.daemon.Appearance GetScaleFactor

image.png

Reply View the author
忘记、过去
Moderator
2022-01-16 06:17
#2
QPixmap Utils::renderSVG(const QString &path, const QSize &size)
{
    QImageReader reader;
    QPixmap pixmap;
    reader.setFileName(path);
    if (reader.canRead()) {
        const qreal ratio = qApp->devicePixelRatio();
        reader.setScaledSize(size * ratio);
        pixmap = QPixmap::fromImage(reader.read());
        pixmap.setDevicePixelRatio(ratio);
    }
    else {
        pixmap.load(path);
    }
    return pixmap;
}

大多数代码里都是这么处理缩放的,绘制图片的时候对 devicePixelRatio 进行处理。

Reply View the author