QTabWidget:关闭选项卡按钮不起作用

问题描述 投票:11回答:3

我设置了ui->tabWidget->setTabsClosable(true);,但QTabwidget仅在每个选项卡上显示一个十字,单击此按钮时不会关闭选项卡。要关闭标签页,我还需要做什么?我试图连接任何接近信号tabCloseRequested(int)的插槽(适合此工作),但在tabwidget中找不到任何此类插槽。请提出正确的方法。

qt qt4 qt4.8 qtabwidget
3个回答
23
投票

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

请参见this answer以获取更多详细信息。


2
投票

您只需要告诉tabWidget本身以如下方式关闭所请求的Tab索引(传递给插槽的参数):

ui->tabWidget->removeTab(index);

0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.