我正在开发一个简单的文本编辑器,它有多个标签。我想实现一个右键单击菜单来重命名QTabWidget实例的点击(不是当前的)选项卡。为此,我必须找到已单击选项卡的索引。我该怎么做?在
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyApplication(...):
...
def contextMenuEvent(self, event):
tabIndex = ... # <- what should I type here?
menu = QMenu(self)
renameAction = menu.addAction("Rename")
action = menu.exec_(self.mapToGlobal(event.pos()))
if action == renameAction:
self.renameTabSlot(tabIndex)
def renameTabSlot(self, tabIndex):
...
您可能需要根据选项卡区域手动检查单击位置(即
event.pos ()
)。我的Python有点生锈,所以这里有一些C++代码代替。假设您的tabwidget名为myTabWidget
:我没有编译并运行此程序,但其思想应该很清楚。注意
mapToGlobal
和mapFromGlobal
调用将给定事件的位置转换为选项卡栏的本机坐标。我希望我做得对。在您可以通过以下代码向QTabBar小部件添加上下文菜单:
这里的诀窍是根据每个选项卡的索引为每个选项卡定义一个lambda,以便将索引传递给rename函数。 有关处理上下文菜单的详细信息,请参见this页。在
相关问题 更多 >
编程相关推荐