我的 Qt 表单中有一个 treewidget。它显示了一个文件树,显示了一个代表它们的图标,以及它们的名称。
我使用 treeItem->setIcon(0, *icon)
和 treeItem->setText(0, text)
输入了这些。
我将两个值输入到同一列 (0) 的原因是,否则图标将不会留在文本旁边,而是始终贴在左边,即使文本向右缩进也是如此(因为它是另一个项目的 child )。
问题是,现在我无法判断用户是点击了图标还是点击了文本本身,我需要分别处理这些。
那么,当单击树形小部件中的对象时,除了树项和列之外,是否还有更多信息, 或者有什么方法可以将它们放在单独的列中,并且仍然具有图标和文本应有的正常行为?
谢谢。
最佳答案
如果您只是使用 clicked() 或 itemClicked() 信号,我认为没有直接的方法来获取更多信息。您可能必须创建一个继承 QTreeWidget 的自定义类,并重新实现其中一个虚拟鼠标事件函数。
mouseMoveEvent ( QMouseEvent * )
mousePressEvent ( QMouseEvent * )
mouseReleaseEvent ( QMouseEvent * )
这不是我推荐的东西,除非你真的知道你在做什么,并且真的需要这样做。
但是,我不记得在任何地方看到过列表小部件,其中单击图标的处理方式与单击同一列中的文本的处理方式不同。因此,如果您正在寻找“图标和文本应具有的正常行为”,您可能应该寻找其他解决方案。
关于c++ - 图标点击Qt QTreeWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062398/