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;
}
}
}
}
문제 같은 것은 나 '이다 m 시스템에 의해 작성 및 파기 된 대리자에 속성 isSelected
을 저장합니다. 그래서 이것은 나에게 잘못된 해결책을주고있다. 솔루션을 여러 개 선택하거나 개선 할 수있는 더 좋은 방법이 있습니까? QAbstractListModel
하위 클래스로 C++에서 model
을 사용하고 있습니다.