2017-02-28 26 views
2

我將iOS應用程序移植到Android平板電腦的Qt/QML。如何在Android平板電腦上實現主控細節視圖Qt/QML?

我想保持該應用程序的行爲與原始iOS版本類似,該版本基於UISplitViewController

換句話說,我需要在橫向模式下使用平板電腦構建主詳情視圖。

爲了達到這個目的,我在考慮使用ListView作爲主視圖,以便在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 { 
     } 

} 

的寬度,高度和應用程序窗口的位置可以被進一步適用於在設備的狀態欄區域不重疊。

但是我仍然堅持佈局的方向,其中默認爲肖像。如何將佈局的方向更改爲橫向?

+1

顯式刪除窗口的設置大小,而是嘗試設置此項:http://doc.qt.io/qt-5/qml-qtquick-window-window.html# visibility-prop – hyde

+0

另外,你有沒有嘗試過這裏顯示的例子:http://doc.qt.io/qt-5/ qml-qtquick-controls-applicationwindow.html – hyde

回答

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文件在項目文件夾/機器人(不是一個build目錄) - >應用程序 - >活動屬性部分:

android:screenOrientation="landscape" 
+0

我檢查了我的項目,沒有AndroidManifest.xml。 build文件夾中的確有一個AndroidManifest.xml文件,但每個版本都會被覆蓋。我正在使用Qt Creator 4.2。1 – BigONotation

+0

所以顯然你沒有生成一個清單存根,所以每次創建一個默認存根。您需要轉到項目 - 爲Android套件構建設置 - 在構建步驟 - 構建Android APK部分中有一個名爲「創建模板」的按鈕。點擊它,您將在項目文件夾中有一個清單來進行更改。 – dtech

+0

非常感謝!這工作! :)接受你的答案 – BigONotation