6
我想在右鍵單擊TableView行時顯示上下文菜單。我想這樣的代碼:如何在TableView中右鍵單擊顯示上下文菜單rowDelegate
import QtQuick 2.0
import QtQuick.Controls 1.0
TableView { id: tableView
width: 300
height: 200
TableViewColumn { role: 'a'; title: 'a'; width: 50 }
TableViewColumn { role: 'b'; title: 'b'; width: 50 }
model: ListModel {
ListElement { a: 1; b: 2 }
ListElement { a: 3; b: 4 }
ListElement { a: 5; b: 6 }
ListElement { a: 7; b: 8 }
ListElement { a: 9; b: 10 }
ListElement { a: 11; b: 12 }
}
Menu { id: contextMenu
MenuItem {
text: qsTr('Delete')
}
}
rowDelegate: Item {
Rectangle {
anchors {
left: parent.left
right: parent.right
verticalCenter: parent.verticalCenter
}
height: parent.height
color: styleData.selected ? 'lightblue' : 'white'
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
onReleased: {
if (typeof styleData.row === 'number') {
tableView.currentRow = styleData.row
if (mouse.button === Qt.RightButton) { // never true
contextMenu.popup()
}
}
mouse.accepted = false
}
}
}
}
}
上下文菜單不顯示,因爲onReleased
處理程序不會調用右鍵點擊。
我用propagateComposedEvents
和mouse.accepted = false
如文檔here的建議,但它不工作,無論如何,我不認爲onReleased
是由事件。
我需要幫助才能使上述代碼按預期工作。
謝謝。
感謝。我必須添加到我的代碼中的唯一行是'acceptedButtons:Qt.LeftButton | Qt.RightButton'。解決了這個問題。 – silviubogan
如果發現只設置「acceptedButtons:Qt.RightButton」效果最好。否則,左鍵點擊不會傳播,你不能選擇行。 –