ListView
から複数のアイテムを選択します。 C++
で、私は上記のコードは、比較のために、ポインタを使用しています。このListViewから複数のアイテムを選択
if (clicked_card->is_selected) {
clicked_card->is_selected = false;
int i = 0;
while(selected_cards[i] != clicked_card) i++;
selected_cards.erase(selected_cards.begin() + i);
} else {
clicked_card->is_selected = true;
selected_cards.push_back(clicked_card);
}
ような何かをやっているだろう。だからどのようにそのような選択QML
で。私が作ってみた解決策は、上記のコードでこの
Card.qml
Image {
id: delegate
property bool isSelected: false
...
MouseArea {
onClicked: {
if(isSelected === true) {
isSelected = false;
gameScene.deselectCard(selectSeq);
}
else {
isSelected = true;
gameScene.selectCard({'opParam': opParam, 'selectSeq': selectSeq});
}
}
}
}
GameScene.qml
Item {
id: gameScene
property var selectedCards: []
signal selectCard(variant userData)
onSelectCard: {
gameScene.selectedCards.push(userData)
}
signal deselectCard(variant userData)
onDeselectCard: {
for (var i = 0; i < gameScene.selectedCards.length; i += 1) {
if (gameScene.selectedCards[i].selectSeq == userData) {
gameScene.selectedCards.splice(i, 1);
break;
}
}
}
}
問題のようなものであることは、私が「ということですシステムによって作成され破棄されるデリゲート内にプロパティisSelected
を格納しています。これは私に虚偽の解決策を与えています。ソリューションの複数の選択や改良点がありますか?私はmodel
をC++から使用しています。QAbstractListModel
をサブクラス化しています。