V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LPeJuN6lLsS9
V2EX  ›  Qt

高 DPI 显示器支持的一些问题

  •  
  •   LPeJuN6lLsS9 · 2015-08-30 20:37:23 +08:00 · 5251 次点击
    这是一个创建于 3397 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现有一个 Qt4 的应用,根据 http://blog.davidedmundson.co.uk/blog/kde_apps_high_dpi 想要获得良好高 DPI 支持得升级到 5 ,但是:

    1.Qt5 支持了 device independent pixel ,但缩放比只能是整数,而我要用的显示器想进行 1.5 倍缩放( [email protected] ),所以这个功能对我没用?
    2.苹果的 retina 没有上面的问题是因为缩放比例总是 2 倍吗?
    8 条回复    2020-12-15 15:10:35 +08:00
    aliuwr
        1
    aliuwr  
       2015-08-30 20:55:31 +08:00   ❤️ 1
    见此处, https://design.google.com/tool/devices/。
    苹果总是整数倍缩放(,而不只是 2 倍),所以不会有问题吧。
    dirtycold
        2
    dirtycold  
       2015-08-30 20:57:21 +08:00   ❤️ 1
    Qt5 截止 5.4.2 确实不支持非整数倍缩放。
    同时 QT_DEVICE_PIXEL_RATIO=2 还有小问题,比如菜单绘制会时不时出错。
    so Qt 本身要达到 1.5 倍缩放可能需要再等新版本了
    LPeJuN6lLsS9
        3
    LPeJuN6lLsS9  
    OP
       2015-08-30 21:30:46 +08:00
    @dirtycold 这个功能确实是挺想要的,因为现在的应用里写 stylesheet 的时候都是各种 1px 的 hardcode ……然后改菜单里的图标大小又比较麻烦(自己改代理 QStyle 之类)
    但是仔细想想 1.5 倍缩放 1px 的线条出来还是 1px (应该是吧?),等于没有。最底线的菜单还会出错(求出处)就是完全没价值了,我还是老实 Qt4 好了
    dirtycold
        4
    dirtycold  
       2015-08-30 22:20:56 +08:00
    菜单破损效果在这里: http://wstaw.org/m/2015/08/30/snapshot1.png 额 才想起来没有说开发平台,我用 linux , Qt5 使用 fusion 风格。测试使用的程序是 Qt Creator , 右键菜单完整的菜单项有约 10 个,但右键点击完全没有显示,随后鼠标划过菜单位置会刷新出加亮的菜单项。(其他平台没有测,搞不好没有这种情况)

    猜想: QPainter 加上 anti-aliasing 说不定能把 1.5px 绘制出来 :-)
    jjgod
        5
    jjgod  
       2015-08-30 22:29:31 +08:00
    可以试试 Qt 5.6 的新支持: http://doc-snapshots.qt.io/qt5-5.6/highdpi.html#qt-support

    如果还是不行的话那应该短期内也不会支持了。
    dirtycold
        6
    dirtycold  
       2015-08-30 22:36:39 +08:00
    @jjgod 看起来有点意思。`Note: Non-integer scale factors may cause significant scaling/painting artifacts.`希望这个影响不大
    LPeJuN6lLsS9
        7
    LPeJuN6lLsS9  
    OP
       2015-09-07 19:22:14 +08:00
    偶然看了一下 os x 的缩放选项界面,看上去是可以随意设置缩放比例?
    http://www.eizoglobal.com/support/compatibility/dpi_scaling_settings_mac_os_x/index.html
    nmgwddj
        8
    nmgwddj  
       2020-12-15 15:10:35 +08:00
    QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.