gpt4 book ai didi

python - 右键单击 QTreeView 内的 QHeaderView

转载 作者:行者123 更新时间:2023-11-28 22:07:02 29 4
gpt4 key购买 nike

我已经编写了具有多列的 QTreeView 的后代。我想创建一个弹出菜单,当用户右键单击列标题时会出现该菜单。为此,我尝试从 QTreeView 捕获信号,但 QTreeView 似乎没有在标题上发出信号。 QTreeView.header() 可以。因此,我认为我必须:
1:将 QHeaderView 的信号之一连接到弹出功能 - 我一直无法找到通过单击鼠标右键触发的信号 - 我已经尝试过 sectionClicked、sectionHandleDoubleClicked、sectionDoubleClicked、sectionPressed(双击功能没有捕捉到并不奇怪一次右键单击 - 但他们确实捕获了两次右键单击)

self.header().sectionClicked.connect(self.headerMenu)
self.header().sectionHandleDoubleClicked.connect(self.headerMenu)
self.header().sectionDoubleClicked.connect(self.headerMenu)
self.header().sectionPressed.connect(self.headerMenu)

或者,
2:使用我自己的 MousePressEvent 函数编写 QHeaderView 的后代,并将其用于我的标题。到目前为止,我未能成功将新的头类连接到 QTreeView 后代。我在运行时不断收到段错误,没有更多解释。

#in DiceView's init, where DiceHeaders is the QHeaderView descendant
self.setHeader(DiceHeaders())

有什么想法吗?

最佳答案

我发现了 setContextMenuPolicy 函数:

self.header().setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.header().customContextMenuRequested.connect(self.headerMenu)

然后,在 headerMenu 中:

def headerMenu(self, pos):
globalPos = self.mapToGlobal(pos)
menu = QMenu()
menu.addAction("test item")
selectedItem = menu.exec_(globalPos)
if selectedItem:
print "selected: ", selectedItem

关于python - 右键单击 QTreeView 内的 QHeaderView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673326/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com