Desidero visualizzare un menu di scelta rapida facendo clic con il pulsante destro del mouse sulle righe di TableView. Ho provato questo codice:Come visualizzare un menu di scelta rapida con il tasto destro del mouse in 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
}
}
}
}
}
Il menu contestuale non risulta, perché il gestore onReleased
non viene chiamato per fa clic destro.
Ho usato propagateComposedEvents
e mouse.accepted = false
come suggerito nella documentazione here ma non funziona in ogni caso e non credo che onReleased
è un evento composto.
Ho bisogno di aiuto per far funzionare il codice sopra come previsto.
Grazie.
Grazie. L'unica riga che dovevo aggiungere al mio codice era 'acceptButtons: Qt.LeftButton | Qt.RightButton'. Questo risolve il problema. – silviubogan
Se si trova che solo l'impostazione "acceptButtons: Qt.RightButton" ha funzionato meglio. In caso contrario, il clic sinistro in qualche modo non si propaga e non è possibile selezionare le righe. –