1

私は最初のQtQuickアプリケーションを作成していますが、他の環境で単純なことを行うのに多くの問題があります。フォルダからランダムにn枚の画像を表示したい。この目的でFolderListModelを使用していますが、問題は、ファイルのリストに直接アクセスするためのメソッドが表示されないことです。だからここに私のハックなアプローチがあります:

  • FolderListModelを使用してファイルを読み取る
  • テキストコンポーネントをデリゲートとして使用する
  • テキストコンポーネントのonTextChangedはファイル名を取得し(この部分は機能します)、それをいくつかのListModelに追加します
  • ListModelをランダム化し、それを使用してファイルを表示します

多くの問題や質問がありますが、まず、これを行うための正しい方法は何ですか(リスト部分をC ++で記述する必要がないようにしてください)。

今のところ2つの問題があります-TextコンポーネントからListModelにアクセスする方法がわかりません。また、画像を表示する別のコンポーネントからListModelをパブリック/アクセス可能にする方法がわかりません。

以下はコードです:

import QtQuick 1.0
import Qt.labs.folderlistmodel 1.0

ListView {
    width: 200; height: 300


    FolderListModel {
        folder: "file:///C:/somefolder"
        id: folderModel
        nameFilters: ["*.jpg"]
    }

    Component {
        id: fileDelegate
        Text { id: intext
               text: fileName
               //the next line fails, Can't find variable: anotherModel
               onTextChanged: anotherModel.append([{name: intext.text}]
             )
        }
    }

    model: folderModel
    delegate: fileDelegate


    ListModel {
          id: anotherModel
      }
}
4

1 に答える 1

2

あなたのコードはほとんど私のために働きます。「QMLListModel:append:value isnotaobject」というエラーが表示されます。これは、配列を追加するためです。角かっこを一列に削除した場合

anotherModel.append([{name: intext.text}]) 

できます。anotherModelをパブリックプロパティにするには、次のように記述します。

property ListModel anotherModel: ListModel {}
于 2011-07-30T12:39:37.720 に答える