如何检测PyQt-QTreeWidget上的中间单击?

2024-05-29 11:48:58 发布

您现在位置:Python中文网/ 问答频道 /正文

itemClicked/itemDoubleClicked信号似乎无法区分鼠标左键单击和鼠标中键单击。我想做不同的事情,取决于被点击的。看起来,点击发生在释放时,所以应用程序鼠标按钮()在实际调用my itemClicked()时没有报告任何按钮。在

虽然我还没有尝试过,但我假设我可以做一些主要的应用程序鼠标测试来全局存储状态,然后从我的itemClicked()中读取它,但这感觉真的很复杂,很难找到更好的方法吗?在

[更新]根据建议,我重写了树的鼠标事件。我也不想仅仅为了这个而费心对QTreeWidget进行子类化,所以为了完整起见,我做了以下工作:

setattr(self.tree, 'middleMouse', False)

def mousePressEvent(self, event):
    self.middleMouse = event.button() == QtCore.Qt.MidButton
    return QtGui.QTreeWidget.mousePressEvent(self, event)

self.tree.mousePressEvent = types.MethodType(mousePressEvent, self.tree)

def itemClicked(item):
    if self.tree.middleMouse:
        <do something>
    else:
        <do another thing>

self.tree.itemClicked.connect(itemClicked)

Python是最好的。在


Tags: selfeventtree应用程序信号def鼠标按钮
1条回答
网友
1楼 · 发布于 2024-05-29 11:48:58

我看到的唯一方法是重新实现QTreeWidget的mouseDoubleClickEvent(QMouseEvent*event),并根据触发事件的按钮更改行为。在

你能做的事情是:

yourQtTreeView.mouseDoubleClickEvent = self.mymouseDoubleClickEvent

def mymouseDoubleClickEvent(event):
    #your code capturing the event

我还没有测试过,但我认为这是方向。在

相关问题 更多 >

    热门问题