qt - 如何在 Android 平板电脑上实现主从 View Qt/QML?

标签 qt qml qtquick2 qtquickcontrols2

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

我希望应用程序的行为与原始 iOS 版本类似,该版本基于 UISplitViewController

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

为了实现这一目标,我正在考虑使用由 ListModel 支持的 ListView 作为主视图,以便每当在 ListView 中选择一个项目时,动态显示详细信息 View 。

目前,我什至正在努力将基本知识做好。如果我的问题看起来太广泛,请提前原谅我,但以下是我立即面临的几个绊脚石:

我在 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 {
        }

}

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

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

最佳答案

这是我使用的:

  // 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

至于强制横向,请将以下内容添加到 list -> 应用程序 -> 事件属性中的项目文件夹/android(不是构建目录中的文件)中的 AndroidManifest.xml 文件中部分:

android:screenOrientation="landscape"

关于qt - 如何在 Android 平板电脑上实现主从 View Qt/QML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519956/

相关文章:

c++ - 不能在 QML 中使用 C++ 类

window - 如何使QtQuick2.0应用程序窗口不可调整大小?

qt - 从 Qt 5.3 代码中的任何位置获取 QML 根对象

qt - 如何为 Qt Creator 使用 MongoDB C 驱动程序?

c++ - TreeView 的列数困惑

c++ - 从其他窗口(Qt)释放窗口?

c++ - QT Creator + SQLite。插入速度非常慢

linux - 我应该如何在 Qt 中编写窗口管理器?

c++ - 客户端计算机上必须安装什么才能运行 QT Quick 应用程序?

qt - QML/QtQuick : make Image occupy only available height in ColumnLayout