gpt4 book ai didi

python - 如何在Python QT中的QTabWidget中查找单击的选项卡的索引?

转载 作者:行者123 更新时间:2023-11-30 23:01:43 27 4
gpt4 key购买 nike

我正在开发一个简单的文本编辑器,它有多个选项卡。我想实现一个右键菜单来重命名 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:

int tabIndex = -1;
{
QTabBar* tabBar = myTabWidget->tabBar ();

QPoint globalPos = this ->mapToGlobal (event->pos ());
QPoint posInTabBar = tabBar->mapFromGlobal (globalPos);

for (int i=0; i<tabBar->count (); ++i)
{
if (tabBar->tabRect (i).contains (posInTabBar))
{
tabIndex = i;
break;
}
}
}

if (tabIndex < 0)
{
// No tab hit...
return;
}

我没有编译和运行这个,但是这个想法应该很清楚。请注意 mapToGlobalmapFromGlobal 调用将给定事件的位置转换为选项卡栏 native 坐标。我希望我做对了。

关于python - 如何在Python QT中的QTabWidget中查找单击的选项卡的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819107/

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