在 QML 中,是否有与手机方向相对应的条件布局?

在 QML 中,是否有与手机方向相对应的条件布局?

因此,不要用这样的方式猜测:

ConditionalLayout 
{
    name: "column"
    when: layouts.width > units.gu(50)
    Column 
    {...

它会是这样的:

ConditionalLayout 
{
    name: "column"
    when: layouts.landscape == true
    Column 
    {...

答案1

您可以使用 [QtQuick.Window][1] API 来访问Qt::屏幕方向(要求 Qt >= 5.1,14.04 提供 5.2):

  • Qt.PrimaryOrientation:显示器的主要方向。
  • Qt.LandscapeOrientation:横向,显示宽度大于显示高度。
  • Qt.PortraitOrientation:纵向方向,显示高度大于显示宽度,相对于横向顺时针旋转 90 度。
  • Qt.InvertedLandscapeOrientation:倒置横向方向,相对于横向旋转180度。
  • Qt.InvertedPortraitOrientation:反转纵向方向,相对于纵向旋转 180 度。

如果检测到横向方向,以下代码将修改布局:

import QtQuick 2.1
import QtQuick.Window 2.1

ConditionalLayout 
{
    name: "column"
    when: Screen.orientation == Qt.LandscapeOrientation
    Column 
    {...

相关内容