这是我现在在TableView
中的位置:
TableView{
model: testContext.list
TableViewColumn{
width: parent.width / 2
title: "Name"
delegate: Text {
text: modelData.name
}
}
TableViewColumn{
width: parent.width / 2
title: "Age"
delegate: Text {
text: modelData.age
}
}
Keys.onDeletePressed: testContext.removeItem(currentRow)
onClicked: {
console.log(row)
}
Menu {
id: contextMenu
MenuItem {
text: "Delete"
onClicked: testContext.removeItem(currentRow)
}
}
}
当我选择一个项目并点击删除时,所选择的项目被删除,但是我还不能通过右键单击显示contextMenu
并删除所选择的项目。 testContext.list
是QVector<QObject*>
,有了ListView/GridView
,我可以得到这样的内容:
ListView/GridView{
id: listView
anchors.fill: parent
model: testContext.list
//cellHeight:
//cellWidth:
delegate: Text{
text: modelData.name + " " + modelData.age
MouseArea {
acceptedButtons: Qt.LeftButton | Qt.RightButton
anchors.fill: parent
onClicked: {
listView.currentIndex = index
listView.forceActiveFocus()
if (mouse.button == Qt.RightButton)
contextMenu.popup()
}
}
}
Menu {
id: contextMenu
MenuItem {
text: "Delete"
onClicked: testContext.removeItem(listView.currentIndex)
}
}
Keys.onDeletePressed: testContext.removeItem(listView.currentIndex)
highlight: Rectangle {
color: "lightgray"
width: listView.width
}
}
通过单击删除或使用contextMenu
删除项目。
我尝试过在MouseArea
之外的其他signal-handler
中添加onClicked
,但到目前为止还算不上运气!
以下示例显示了如何使用上下文菜单(我没有使用QObject列表,因为在这种情况下该模型是不相关的,因此为了简化示例,请使用ListModel)
TableView