Qt确实支持我的各种桌面上不同的像素比率(./a.out
):
devicePixelRatio
导致桌面w1280 w720 hi DPI 比率:3 qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1")
我想知道我是否可以为我的应用程序手动调整此比率,例如使用"比率2"在上面的例子2中。
那么有没有办法在运行时设置这个值?
基于http://doc.qt.io/qt-5/highdpi.html,我确实尝试了类似
QT_AUTO_SCREEN_SCALE_FACTOR
实际上我确实期望设置qputenv("QT_SCALE_FACTOR", QString::number(scaleFactor).toLocal8Bit());
看起来像上面的数字2,但它不一样。 1-4看起来很奇怪。
以下3行看起来类似于int scaleFactor = 3
(基于https://stackoverflow.com/a/45168724/356726)
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1")
PS:跟进
答案 0 :(得分:1)
这是我当前被要求解决的问题。只有在构造UI之前,它才起作用,因此我一开始就将其称为
。在高DPI屏幕上传递大约1.0(例如0.75)的值。但是我以后不能更改。
void CGuiApplication::highDpiScreenSupport(double scaleFactor)
{
if (scaleFactor < 0)
{
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
}
else
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); // HiDPI pixmaps
const QString sf = QString::number(scaleFactor, 'f', 2);
qputenv("QT_SCALE_FACTOR", sf.toLatin1());
}
}