QTabWidget:关闭标签按钮不起作用

时间:2013-10-03 05:04:36

标签: qt qt4 qt4.8 qtabwidget

我已设置ui->tabWidget->setTabsClosable(true);,但QTabwidget仅在每个标签上显示一个十字,而不是在点击此按钮时关闭标签。还有什么办法可以让标签关闭?我试图连接信号tabCloseRequested(int)附近的任何插槽(这对于这项工作是合适的)但是在tabwidget中找不到任何这样的插槽。请以正确的方式建议。

4 个答案:

答案 0 :(得分:23)

创建一个插槽,例如closeMyTab(int)并将标签小部件的tabCloseRequested(int)信号连接到此广告位。在此插槽调用选项卡小部件的removeTab方法中,从信号中收到索引。

有关详细信息,请参阅this answer

答案 1 :(得分:3)

对于以后遇到这个问题的人,寻找PyQt5解决方案,可以将其浓缩为1-liner:

tabs = QTabWidget()
tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index))

tabClos​​eRequested信号发出的整数等于发出该信号的标签的索引,因此您可以将其连接到以索引为参数的lambda函数。

我能看到的唯一问题是,将lambda函数连接到插槽可防止在删除选项卡(see here)时对象被垃圾回收。

答案 2 :(得分:2)

您只需要告诉tabWidget本身关闭请求的选项卡索引(传递给插槽的参数),如下所示:

ui->tabWidget->removeTab(index);

答案 3 :(得分:0)

自从有了新的连接语法(Qt 5)以来,最好的方法是:

QTabWidget* tabWidet = new QTabWidget();
connect(tabWidget->tabBar(), &QTabBar::tabCloseRequested, tabWidget->tabBar(), &QTabBar::removeTab);