【发布时间】:2019-04-24 22:22:51
【问题描述】:
我有一个 QTreeView,其中一些项目用图标装饰。这些项目可以在 TreeView 的任何列中。
我想知道如何检测鼠标点击图标。我可以使用视图的 mousePressEvent() 来检测鼠标按下,我可以通过调用模型的 data() 方法来检查点击的项目中是否存在图标 data() em>Qt.DecorationRole 来查看我是否得到一个空的 QVariant,我可以使用视图的 iconSize() 方法查询图标的大小。但我无法知道图标在项目的视觉矩形内的坐标。
附言。其他与 QTreeView 装饰有关的 SO 问题通常是指树 collapse 和 expand 图标,与此问题无关。
【问题讨论】:
-
问题是检测鼠标点击 - 在我的情况下,我将根据模型中的数据执行操作,但这与问题无关。第二部分是相关的,因为项目中图标的位置由其样式控制-但我认为您的观点是它没有给问题增加任何内容,因此我将其删除。谢谢。
-
如果可能的话,只需将图标放在单独的列中即可。否则你需要处理很多不同的情况,你会得到一个通用的答案。因为图标可能具有不同的大小或位置。我同意@eyllanesc - 您可以查看
drawControl的源代码并以某种方式预测图标位置。