从Qt for Android访问res文件

时间:2016-01-10 14:44:58

标签: android qt qml

如何将示例ToolButton的图标设置为“ic_not_interested_black_48dp.png” 我的Qt项目中有android / res目录,有一些不同屏幕尺寸的目录,drawable-hdpi,drawable-ldpi等。

为给定屏幕设置正确图标的最佳方法是什么。 Qt / Android是单独解决这个问题还是我必须根据我的屏幕尺寸创建返回正确前缀'drawable-hdpi /'或'drawable-ldpi /'的函数?

2 个答案:

答案 0 :(得分:2)

虽然Qt 5.6中的高DPI支持率为substantially improved,但对图标密度变化的支持为not yet there

尽管如此,您可以使用QFileSelector。启动时,使用QScreen(例如devicePixelRatio)检查设备显示屏的DPI,然后将该值映射到drawable-ldpidrawable-hdpi等。你有正确的字符串,通过调用setExtraSelectors()将其添加到选择器列表中。这样,假设您有一个类似下面的目录结构,将选择正确的图标文件:

drawable-ldpi/
    ic_not_interested_black.png
drawable-hdpi/
    ic_not_interested_black.png

然后,您需要在Q_INVOKABLE派生类中定义QObject函数,然后将其公开给QML(例如通过上下文属性),该QML采用图标文件的路径并致电QFileSelector::select(iconPath)。当您完成后,您在QML中对它的使用将如下所示:

ToolButton {
    iconSource: iconSelector.select("ic_not_interested_black.png")
}

答案 1 :(得分:0)

是的,你必须创建不同的尺寸和分辨率图标drawable-hdpi意味着高密度drawable-ldpi意味着它的低密度

有一组六个广义密度:

  • ldpi(低)~120dpi
  • mdpi(中)~160dpi
  • hdpi(高)~240dpi
  • xhdpi(超高)~320dpi
  • xxhdpi(extra-extra-high)~480dpi
  • xxxhdpi(extra-extra-extra-high)~640dpi

for details它可以帮助您在不降低性能的情况下将应用加载到高级到低级别的设备。