QML TableView 鼠标区域不会将点击传播到选择模型
Posted
技术标签:
【中文标题】QML TableView 鼠标区域不会将点击传播到选择模型【英文标题】:QML TableView Mouse area does not propagate click to selection model 【发布时间】:2018-06-16 19:40:25 【问题描述】:我有一个 TableView
和一个包含 MouseArea
的委托。我想将点击传播到TableView
,以便选择项目仍然有效。但是,在我的MouseArea
存在的情况下,我无法选择TableView
中的元素。我该如何更改?
TableView
id: tableView
model: testModel
selectionMode: SelectionMode.SingleSelection
Component
id: testDelegate
Item
id: delegateItem
Text
id: ctext
text: styleData.value
color: styleData.textColor
MouseArea
id: mouseArea
acceptedButtons: Qt.LeftButton | Qt.RightButton
anchors.fill: parent
propagateComposedEvents: true
onClicked:
console.log("click");
mouse.accepted = false
TableViewColumn
role: "TestRole"
delegate: testDelegate
【问题讨论】:
【参考方案1】:如果您不介意使用onPressed
事件而不是onClicked
进行用户交互,传播该事件还将允许在TableView
中进行选择(如果需要,包括ExtendedSelection
模式):
MouseArea
// ...
onPressed:
mouse.accepted = false
【讨论】:
这就是诀窍!试图将它与 onClicked 结合起来,但遗憾的是后者没有被调用【参考方案2】:由于您重新定义了项目委托,您还应该实现项目选择。 我通常这样做:
onClicked:
tableView.selection.clear();
tableView.selection.select(styleData.row);
【讨论】:
以上是关于QML TableView 鼠标区域不会将点击传播到选择模型的主要内容,如果未能解决你的问题,请参考以下文章