2

我正在将 iOS 应用程序移植到针对 Android 平板电脑的 Qt/QML。

我想保持应用程序的行为类似于原始 iOS 版本,它基于UISplitViewController.

换句话说,我需要在横向模式下使用平板电脑构建一个主从视图。

为了实现这一点,我正在考虑使用ListViewaListModel作为主视图,这样每当在 中选择项目时,ListView就会动态显示详细信息视图。

目前,我正在努力使基础知识正确。如果我的问题看起来太宽泛,请提前原谅我,但这里有几个我马上面临的绊脚石:

我在 QML 中看到的大多数示例似乎都“硬编码”了设备的屏幕尺寸。例如,Qt Creator 中的典型骨架项目将包含以下代码:

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

        Page1 {
        }

} 
  • 如上所示,窗口的宽度和高度属性是硬编码的。在实践中,我需要根据物理设备的屏幕大小动态设置这些值。我怎样才能做到这一点?

  • 我还需要调整应用程序屏幕的大小,以便为屏幕顶部的状态栏区域(显示电池电量的区域)留出一些空间。

任何代码片段以及说明如何实现这一点的在线文档的指针都将非常感激!

编辑:这是一个更新的 main.qml,它使用设备的屏幕大小设置应用程序窗口的大小:

ApplicationWindow {
    id: appWindow
    visible: true
    width: Screen.width
    height: Screen.height
    title: qsTr("Hello World")

        Page1 {
        }

}

应用程序窗口的宽度、高度和位置可以进一步调整为不与设备的状态栏区域重叠。

但是我仍然坚持布局方向,默认为纵向。如何将布局的方向更改为横向?

4

1 回答 1

2

这是我使用的:

  // in the main window
  property bool desktop: {
    switch (Qt.platform.os) {
    case "android":
    case "ios":
    case "winphone":
    case "winrt":
      return false
    default: return true
    }
  }
  visibility: desktop ? Window.AutomaticVisibility : Window.Maximized

至于强制横向,AndroidManifest.xml在清单->应用程序->活动属性部分的项目文件夹/android(不是构建目录中的那个)的文件中添加以下内容:

android:screenOrientation="landscape"
于 2017-03-01T01:01:38.500 回答