如何在 Android 平板电脑上实现主从视图 Qt/QML?
How to implement a master-details view Qt/QML on an Android tablet?
我正在将 iOS 应用程序移植到 Qt/QML,目标是 Android 平板电脑。
我想让应用程序的行为与原始 iOS 版本相似,该版本基于 UISplitViewController
。
换句话说,我需要在横向模式下使用平板电脑构建一个主从视图。
为了实现这一点,我正在考虑使用 ListModel
支持的 ListView
作为主视图,这样每当在 ListView
中选择一个项目时,详细信息视图是动态显示的。
目前,我正在努力掌握最基本的知识。如果我的问题看起来太宽泛,请提前原谅我,但这里有几个我马上要面对的绊脚石:
我在 QML 中看到的大多数示例似乎 "hardcode" 设备的屏幕尺寸。例如,Qt Creator 中的典型骨架项目将包含以下代码:
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Page1 {
}
}
如上所示,window 的宽度和高度属性是硬编码的。实际上,我需要根据物理设备的屏幕尺寸动态设置这些值。我怎样才能做到这一点?
我还需要调整应用程序屏幕的大小,以便为屏幕顶部的状态栏区域(显示电池电量的区域)留一些 space .
任何说明如何实现此目的的代码片段以及指向在线文档的指针都将不胜感激!
编辑:这是一个更新的 main.qml,它使用设备的屏幕尺寸设置应用程序 window 的尺寸:
ApplicationWindow {
id: appWindow
visible: true
width: Screen.width
height: Screen.height
title: qsTr("Hello World")
Page1 {
}
}
应用程序的宽度、高度和位置window可以进一步适配以不与设备的状态栏区域重叠。
但是我仍然坚持布局方向,默认为纵向。如何将布局的方向更改为横向?
这是我使用的:
// 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(不是构建目录中的那个)在 manifest -> application -> activity 属性部分:
android:screenOrientation="landscape"
我正在将 iOS 应用程序移植到 Qt/QML,目标是 Android 平板电脑。
我想让应用程序的行为与原始 iOS 版本相似,该版本基于 UISplitViewController
。
换句话说,我需要在横向模式下使用平板电脑构建一个主从视图。
为了实现这一点,我正在考虑使用 ListModel
支持的 ListView
作为主视图,这样每当在 ListView
中选择一个项目时,详细信息视图是动态显示的。
目前,我正在努力掌握最基本的知识。如果我的问题看起来太宽泛,请提前原谅我,但这里有几个我马上要面对的绊脚石:
我在 QML 中看到的大多数示例似乎 "hardcode" 设备的屏幕尺寸。例如,Qt Creator 中的典型骨架项目将包含以下代码:
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Page1 {
}
}
如上所示,window 的宽度和高度属性是硬编码的。实际上,我需要根据物理设备的屏幕尺寸动态设置这些值。我怎样才能做到这一点?
我还需要调整应用程序屏幕的大小,以便为屏幕顶部的状态栏区域(显示电池电量的区域)留一些 space .
任何说明如何实现此目的的代码片段以及指向在线文档的指针都将不胜感激!
编辑:这是一个更新的 main.qml,它使用设备的屏幕尺寸设置应用程序 window 的尺寸:
ApplicationWindow {
id: appWindow
visible: true
width: Screen.width
height: Screen.height
title: qsTr("Hello World")
Page1 {
}
}
应用程序的宽度、高度和位置window可以进一步适配以不与设备的状态栏区域重叠。
但是我仍然坚持布局方向,默认为纵向。如何将布局的方向更改为横向?
这是我使用的:
// 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(不是构建目录中的那个)在 manifest -> application -> activity 属性部分:
android:screenOrientation="landscape"