私はQMLでListView
持っている:すべてはListView
自動的に更新され、正常に動作しますListModelに要素を追加した後にQML ListViewを更新するにはどうすればよいですか?
QVariant qv(QString("image://plots/").append(imageName));
QMetaObject::invokeMethod(plotList, "addImage", Q_ARG(QVariant, qv));
:私は画像提供と機能addImage(src)
を使用して、いくつかの項目を追加最初に
ListView {
id: listView1
width: parent.width
height: parent.height
interactive: true
clip: true
visible: true
property int elementH: 200
Component.onCompleted: {
mSingals.setPlotList(listView1);
}
function addImage(src) {
listModel.append({"imageSrc": src});
}
function clear() {
listModel.clear();
}
function redraw() {
// ?????
//listView1.update();
}
model: ListModel {
id: listModel
objectName: lModel
}
delegate: Rectangle {
id: delegateItem
width: listView1.width; height: listView1.elementH
color: "blue"
Image {
anchors.left: parent.left
source: imageSrc
visible: true
}
}
}
を。 それから私はListModel
からすべての項目をクリアして、いくつかの新しいものを追加:
QMetaObject::invokeMethod(plotList, "clear");
QVariant qv(QString("image://plots/").append(someNewImage));
QMetaObject::invokeMethod(plotList, "addImage", Q_ARG(QVariant, qv));
ListView
もようなもので更新されません。だから私は数回上下にスクロールし、する必要が
QMetaObject::invokeMethod(plotList, "redraw");
古い要素を消して新しい要素が表示されるようにしますが、とにかく、20の最初の要素は、私が何をしても同じままです。
ListView
を更新するにはredraw()
で何を使用しますか? dataChanged
のシグナルがListModel
のように出力されることがありますか?
clear()の代わりにremove()を使用してみてください。私は、あなたがclear()を実行するときに動的な役割が削除されたと考えています。 –