根据此处的文档http://doc.qt.io/qt-5/highdpi.html QT 5.4+引入了高DPI支持。 但是,要么我缺少一些基本的东西,要么目前的支持仍处于非常早期阶段。 我正在写一个全新的应用程序,所以我有机会从头开始做。我知道我必须使用布局而不是固定定位等,但总会出现我需要指定的情况,例如控件的最小/最大尺寸。我可以在编辑器中指定它们,但这些是设备像素。因此,如果我将Windows设置更改为使用150%DPI,则编辑器中的最小值/最大值将会太小。当然,我可以获得该比率并调整代码中的所有必需值,但是如果我必须手动完成所有操作,QT会给我什么样的高DPI支持?我的意思是说QT 5.4之前有什么不同?
然后一个有趣的是QT_DEVICE_PIXEL_RATIO环境变量。它完全符合我的需要,它将编辑器中设置的所有像素乘以一个因子。但为什么它是环境变量而不是每个应用程序设置?为什么它只支持2,3等的整数值,因为我们知道Windows有125,150%等设置,为什么它不能自动读取Windows设置并将自己设置为该值?
答案 0 :(得分:0)
Qt完全支持Qt 5.6以后的高DPI监视器,通过属性或环境变量(OS X除外,支持本机)。对于属性方法,请使用:
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support
QApplication app(argc, argv);
return app.exec();
}
或设置系统环境变量:
QT_AUTO_SCREEN_SCALE_FACTOR=1
有关Qt blog
的更多信息答案 1 :(得分:0)
我必须回答@Nicolas Holthaus的回答,你启用Qt :: AA_EnableHighDpiScaling的方式可能不是绝对正确的。因为它将围绕用户DPI设置。例如。 Windows DPI设置为150%,字体和大小的结果为200%,而125%为100%。
正确的DPI缩放方法是设置环境变量QT_SCALE_FACTOR
。对于同一示例,如果DPI设置为150%,请将QT_SCALE_FACTOR
设置为值1.5
。然后结果将是150%的字体和大小。
请参阅qt官方文档http://doc.qt.io/qt-5/highdpi.html,您会找到
QT_SCALE_FACTOR [numeric] defines a global scale factor for the whole application, including point sized fonts.