2017-06-15 50 views
0

我現在開始使用qt/qml編程,它聽起來有點不同於java,現在我的區域,所以我需要在一個文件夾中填充一組.png文件的數組,但是我不知道我該怎麼做。 我有這樣的:qml中的圖像列表

// ... 
Image { 
    anchors.top: parent.center 
    anchors.left: parent.center 
    anchors.margins: 0 
    width: 22 
    height: width 
    source: "qrc:/images/img000.png" 
} 
// ... 

[編輯]此代碼是日曆例如」 ../Qt-5.9/quickcontrols/controls/calendar的一部分,我得到了它的開始,因爲這個例子是像我需要,但我需要在日曆網格中顯示此掛載的所有日期中放置圖像,所以我將這些圖像放在一個文件夾中,並在我的recources.qrc文件中的相應文件夾中引用這些圖像,所以我需要循環這個文件夾來獲取所有的圖像,因爲他們被順序命名爲「img000.png」到「img029.png」,所以我想填充這些圖像的數組,然後把這些圖像在適當的代表性日期逐一適合這個在日曆網格中顯示月份 我不知道我是否使用Lis噸...或者像@ eyllanesc迭代文件夾文件,我相信哪些操作列表是非常不同的形式的Java,這是在我的項目爲Android的Java中。

我不知道QT,但我需要它,因爲我需要遷移此項目的IO?

在此先感謝!

+0

「QML圖片LIS t模型「將是一個搜索上下文。這個問題可能沒有資格在這裏發佈。 – AlexanderVX

+0

嗨@AlexanderVX,很抱歉,如果我importunate你的問題,這是因爲像我說的,我開始在QT,現在我的Java程序員,所以我完全混淆了什麼是在QT/QML,但感謝您的警告。 –

+0

NP。你的問題比我最初閱讀的要複雜一點。 – AlexanderVX

回答

2

由於圖像的來源是類型爲0xx.png的元素,可以用Repeater的索引進行迭代,爲了適應它們,您可以使用GridLayout。

GridLayout { 
     columns: 5 
     Repeater { 
      model: 30 
      Rectangle{ 
       width: 100 
       height: 100 
       Image{ 
        anchors.fill: parent 
        source: { 
         var str = "%1".arg(index); 
         var format = "000"; 
         return "qrc:/images/img%1.png".arg(format.substring(0,format.length- str.length) + str)} 
       } 
      } 
     } 
    } 

我不想通過一個循環迭代,因爲它實現GUI時是不優雅,不如採取特定的元素,例如你的情況天的月份,並採取「指數」。每天添加圖片後,您只需要進行以下更改日曆例如:

注:我認爲圖像img001.png,img002.png,...,img031.png

source code

Image { 
    //visible: eventModel.eventsForDate(styleData.date).length > 0 
    anchors.top: parent.top 
    anchors.left: parent.left 
    anchors.margins: -1 
    width: 12 
    height: width 
    //anchors.fill: parent 
    source: { 
     var str = "%1".arg(styleData.date.getDate()); 
     var format = "000"; 
     return "qrc:/images/img%1.png".arg(format.substring(0,format.length- str.length) + str) 
    } 
} 

截圖:

enter image description here

+0

嗨@eyllanesc,至少在你的例子中,你給了我一個定向燈,謝謝! –

+0

嘿@eyllanesc,這真的是一個超級美麗和簡單的解決方案,謝謝!當我結束這個項目時,我會在這裏發佈「最終剪輯」。 –

+0

如果我的回答有幫助,請將其標記爲正確 – eyllanesc