每当单击选项卡时,我都需要显示上下文菜单,并且需要对该特定选项卡作出反应。有没有办法在不进行子类化的情况下做到这一点?
答案 0 :(得分:5)
简单的方法,但可能不是您需要的:
只要更改选项卡(不一定点击),就会调用一个函数 在当前鼠标位置产生一个菜单。
复杂的方式,完全符合你的描述:
答案 1 :(得分:2)
创建一个QMenu:
m_menu = new QMenu;
将操作添加到菜单。
创建在选项卡栏上请求上下文菜单时要调用的插槽:
connect(m_tabWidget->tabBar(), &QTabBar::tabBarClicked, this, &MyClass::on_contextMenuRequested);
在插槽中,显示菜单。广告位的定义:
void MyClass::on_contextMenuRequested(int tabIndex)
{
m_menu->popup(QCursor::pos());
}
如果您需要在其他功能中使用当前标签的索引,请使用以下命令:
m_tabWidget->tabBar()->currentIndex()
答案 2 :(得分:0)
我认为您需要创建自己的继承自QTabWidget的类并覆盖MousePressEvent(QMouseEvent)保护的函数,您可以在其中右键单击创建上下文菜单。