我用Qt创建了一些GUI应用程序 . 我的GUI应用程序包含按钮和单选按钮等控件 . 当我运行应用程序时,按钮内的按钮和字体看起来很正常 . 当我将显示器的DPI缩放尺寸从100%更改为150%或200%时,控件的字体大小变大但控制尺寸(按钮,单选按钮)无论分辨率如何 . 因此,内部控件中的文本被切断 . 请参阅附图 .
当DPI缩放大小设置为100%时,Qt应用程序看起来
当DPI缩放大小设置为200%时,Qt应用程序看起来
我也在一些平板电脑上运行我的应用程序 . 在平板电脑中,DPI标度值应该超过150%,否则一切都将显示得非常小 .
我在网上搜索了在Qt中创建UI应用程序,无论分辨率和DPI比例值如何,但没有运气 . 所以我在这里发布我的任务 . 如果有办法摆脱这种情况,请告诉我 .
3 回答
从Qt 5.6开始启用高DPI支持 .
在应用程序源代码中设置
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling)
允许自动进行高DPI缩放 .注意:要使用属性方法,必须在创建
QApplication
对象之前设置属性:正确使用布局可以提供帮助 .
http://qt-project.org/doc/qt-4.8/layout.html
告诉您处理DPI更改的操作系统将防止您不期望的奇怪的字体更改 .
http://msdn.microsoft.com/en-us/library/ms701681(v=vs.85).aspx
对于间隔关键位置,您可以检查渲染字体的大小,然后根据文本的最终大小设置对象的最小大小 .
http://qt-project.org/doc/qt-4.8/qfontmetrics.html#details
https://blog.qt.digia.com/blog/2009/06/26/improving-support-for-higher-dpi-on-vista/
您可以尝试使用Qt中的其他内置测量值进行检查:
http://qt-project.org/doc/qt-4.8/qpaintdevice.html#widthMM
http://qt-project.org/doc/qt-4.8/qpaintdevice.html#logicalDpiX
如果您使用的是QML,请尝试仅使用基于锚点的放置的原始布局 .
http://qt-project.org/doc/qt-4.8/qml-anchor-layout.html
QApplication
有一些有些相关的设置 .http://qt-project.org/doc/qt-4.8/qapplication.html#setDesktopSettingsAware
您也可以手动指定字体 .
http://qt-project.org/doc/qt-4.8/qapplication.html#setFont
希望有所帮助 .
我有一个固定大小的窗口,当Windows应用程序设置用于扩展所有文本大小时,窗口不够大,无法容纳它所包含的所有文本 . Windows通过dpi增加来实现这一点 . 我通过检索os缩放因子然后调整了我的窗口的大小和它的一些布局(由于某种原因我无法自动缩放)来解决这个问题 .
以下是我获得dpi比例的方法(在名为“WindowsDpiScale.h”的文件中):
然后,我在我的案例中如何应用它: