pyqt5给treewidget获取点击项的位置
时间: 2023-07-15 22:13:40 浏览: 165
python 中pyqt5 树节点点击实现多窗口切换问题
5星 · 资源好评率100%
可以使用 `itemAt()` 方法来获取在 `QTreeWidget` 中点击的项的位置,具体的实现方法如下:
```python
from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem
class MyTreeWidget(QTreeWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.itemClicked.connect(self.get_position)
def get_position(self, item: QTreeWidgetItem):
pos = self.viewport().mapFromGlobal(self.cursor().pos())
clicked_item = self.itemAt(pos)
if clicked_item:
print(clicked_item.text(0))
```
在这个示例中,我们创建了一个自定义的 `QTreeWidget` 类,当点击某个项时,会触发 `itemClicked` 信号,然后调用 `get_position()` 方法。在 `get_position()` 方法中,我们使用 `viewport()` 方法获取 `QTreeWidget` 的视口,然后使用 `mapFromGlobal()` 方法将全局鼠标位置映射到视口坐标系中,最后使用 `itemAt()` 方法获取在该位置的项。如果存在项,则打印该项的文本内容。
阅读全文