在Qt中确定Tablet / Mobile的正确方法

时间:2015-06-23 09:20:01

标签: android qt size screen

要确定设备是平板电脑还是移动设备,我使用标准:如果设备的屏幕对角线大于7个图标,则设备为平板电脑。为了获得对角线,我使用:

QScreen *srn = qApp->screens().at(0);
QSizeF physicalSize = srn->physicalSize();

但是当我使用4.7英寸Nexus 4时,physicalSize返回大于7英寸。 我真的不知道,设备实现者是做错了还是Qt框架。无论如何,从playmarket获得的另一个应用程序正确地确定了问题。 QUESTON:确定,平板电脑或移动设备的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

我不知道你想要做什么,但如果你只想要两个不同的手机和平板电脑布局文件,那么你可以这样做: 使用Fragments时,通常有两个不同的layoutfiles。一个只包含一个Framelayout,用于移动设备,另一个包含两个用于平板电脑的Framelayout。

确定设备是手机还是平板电脑的好方法是在您的values文件夹中创建refs.xml文件。只需在其中放置一个带有名称的项目以及要引用的布局。此文件适用于移动设备:

<resources>
<item name="activity_masterdetail" type="layout">@layout/activity_fragment</item>
</resources>

比你创建另一个名为values-sw600dp的值文件夹。在此文件夹中,您可以创建另一个refs.xml文件。重要的是为两个refs文件提供相同的项目名称。然后你参考平板电脑布局。

<resources>
<item name="activity_masterdetail" type="layout">@layout/activity_twopane</item>
</resources>

现在您可以使用您的项目名称设置内容视图,如果您有平板电脑或手机,Android将选择正确的视图。

在您的活动中的onCreate()方法中:

setContentView(R.layout.activity_masterdetail);

现在您必须检查平板电脑视图的Framecontainer是否为空:

if (findViewById(R.id.yourFragmentDetailContainerForTablets) == null) {
   doYourCode();
} else {
   doYourCode();

答案 1 :(得分:0)

如果您想在inches中计算显示尺寸,则需要执行以下操作:

QScreen *scr = qApp->screens().at(0);
qDebug() << "My Screen size is : " << scr->physicalDotsPerInch();

请找到更多信息here