No QML, existe um layout condicional que corresponda à orientação dos telefones?

1

Então, em vez de adivinhar com algo parecido com isto:

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

Seria algo assim:

ConditionalLayout 
{
    name: "column"
    when: layouts.landscape == true
    Column 
    {...
    
por Akiva 14.04.2014 / 19:40

1 resposta

2

Você pode usar a API [QtQuick.Window] [1] para acessar Qt :: ScreenOrientation (requer Qt > = 5.1, 14.04 fornece 5.2):

  • Qt.PrimaryOrientation: a orientação principal da exibição.
  • Qt.LandscapeOrientation: orientação de paisagem, a largura de exibição é maior que a altura de exibição.
  • Qt.PortraitOrientation: orientação de retrato, a altura de exibição é maior que a largura de exibição, girada 90 graus no sentido horário em relação à paisagem.
  • Qt.InvertedLandscapeOrientation: orientação de paisagem invertida, girada 180 graus em relação à paisagem.
  • Qt.InvertedPortraitOrientation: Inverte a orientação de retrato, girada 180 graus em relação ao retrato.

O código a seguir modificará o layout se uma orientação Paisagem for detectada:

import QtQuick 2.1
import QtQuick.Window 2.1

ConditionalLayout 
{
    name: "column"
    when: Screen.orientation == Qt.LandscapeOrientation
    Column 
    {...
    
por Sylvain Pineau 14.04.2014 / 20:20