我想在右键单击TableView行时显示上下文菜单.我试过这段代码:
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
如文档中建议在这里,但它不工作,无论如何,我不认为这onReleased
是一个组合的事件.
我需要帮助才能使上面的代码按预期工作.
谢谢.