2012-02-06 46 views
1

我想寫使用QtQuick \ QML應用程序啓動,我想用戶體驗是相似到iOS,在具有圖標的網格可以與被重新安排方面QML應用程序啓動如果圖標被放置在中間位置,則可以通過動畫過渡和「對齊網格」效果「移開」圖標。我試過使用GridView和拖動屬性,但我似乎無法得到佈局做我想要的。使用QML實現這種類型的應用程序的最佳方式是什麼?我對QtQuick相當陌生,而且我覺得我可能錯過了一些基本的東西,這會讓這個寫法變得相當容易。相似到iOS

+0

你可以在你已經嘗試了更加明確?也許顯示一些代碼? – blakharaz 2012-02-07 05:41:01

回答

0

我做了諾基亞N9推出外觀和感覺(Maemo操作6,或者也被稱爲MeeGo的)。 它是類似的,我只是從上到下滾動圖標,而您從左到右(反之亦然)更改「頁」。

我不知道是不是最好的方式,但是這是我怎麼沒圖標管理器(它的體積縮小,這只是給你的想法 - 在現實中卻是相當大的):

Item 
{ 
    id: root 

    function getChildAt(x, y) {} 
    function getIndexOfChild(child) {} 
    function moveChild(child, x, y) 
    { 
     //moving around icons 
    } 

    function setIndexToChild(child) 
    { 
     //index of child in Grid element (where to drop) 
    } 

    Flickable 
    { 
     id: scroller 
     clip: true 
     //you most likely want HorizontalFlick ("paging" effect you can add on onBeginingXChanged) 
     flickableDirection: Flickable.VerticalFlick 

     contentHeight: iconTable.height 
     contentWidth: iconTable.width 

     Grid 
     { 
      id: iconTable 

      width: root.width 
      anchors.top: parent.top 
      flow: Grid.LeftToRight 
      spacing: 10 

      add: Transition 
      { 
       NumberAnimation 
       { 
        properties: "x,y" 
        //make desired transition 
       } 
      } 
      move: Transition 
      { 
       NumberAnimation 
       { 
        properties: "x,y" 
        //make desired transition 
       } 
      } 
     } 
    } 
} 

您也可以在C++中寫下自己的管理器實現,然後在QML中使用它。


這是它的樣子:

Preview of icon manager

0

我創建遙遠的東西連接到這個最近的想法是:創建捕捉一個ListView。它的委託應該包含一個GridView。將所有應用程序分成n個元素的塊。然後,(它的唯一的想法)

ListModel 
{ 
    ListElement { apps: [app1, app2, ..., appn] } 
    ListElement { apps: [app1, app2, ..., appn] } 
    .... 
    ListElement { apps: [app1, app2, ..., appk] } 
} 

然後填充這個模型,並與apps財產GridView的ListView控件。 我不知道你是否能提供拖放在這裏,雖然