0

私はListViewCascadesアプリでを使用しており、ほとんどの作業をQMLで行っています。これがattachedObjects: [ ]内部ListViewです:

attachedObjects: [
    FmnModel {
        id: fmnModel
    },
    FmnListModel {
        id: asynkDataSource
        source: "sql/fgmt.db"
        query: "SELECT lists.id, lists.name, (SELECT COUNT(1) FROM tasks WHERE tasks.listid=lists.id AND tasks.status=\"Pending\") AS pendings FROM lists"

        onDataLoaded: {
            if(data.length > 0) {
                fmnModel.insertList(data);
            }
        }
    }
] // Attached Objects

そして、次のページをNavigationPane:にロードするコード

property variant taskpaged
onTriggered: {
    taskpaged = taskPageDefinition.createObject();
    navPane.push(taskpaged);

    taskpaged.back.connect(navPane.pop);
}

そのため、ページで[戻る]をクリックするtaskpagedと、アプリがクラッシュします。なぜですか?または、より多くのコードを提供する必要がありますか?(はいの場合、どちらですか?)

4

2 に答える 2

0

signal back()の QML の最上位要素で宣言する必要がありますtaskPageDefinition。次に、ページのナビゲーション ペイン プロパティを定義し、[戻る] ボタンがクリックされたときに発生するアクションを指定する必要もあります。

Page {
  id: taskPage
  signal back()

  paneProperties: NavigationPaneProperties {
    backButton: ActionItem {
        onTriggered: {
            // Send the back() signal, which you already connected to nav.pop()
            taskPage.back();
        }
    }
  }
}

うまくいけば、それは役に立ちます。この質問を見ることもできます。完全なナビゲーションペインの例をそこに投稿しましたが、その中では、戻るボタンの onTriggered から直接 nav.pop() を呼び出すだけです。ここでは、シグナルとスロットを使用しています。

于 2013-01-23T03:27:11.190 に答える
0

いくつかのエラーがスローされることがありますが、あるページから開始して別のページをプッシュした場合、エラーは表示されません。読み込まれる最初のページとしてアプリが (taskpage) を指すようにします。多くの例外があることがわかります。それらを修正して元のコードに戻す

于 2013-01-16T08:50:41.320 に答える