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是最好的。在
我看到的唯一方法是重新实现QTreeWidget的mouseDoubleClickEvent(QMouseEvent*event),并根据触发事件的按钮更改行为。在
你能做的事情是:
我还没有测试过,但我认为这是方向。在
相关问题 更多 >
编程相关推荐