我设置了ui->tabWidget->setTabsClosable(true);
,但QTabwidget
仅在每个选项卡上显示一个十字,单击此按钮时不会关闭选项卡。要关闭标签页,我还需要做什么?我试图连接任何接近信号tabCloseRequested(int)
的插槽(适合此工作),但在tabwidget中找不到任何此类插槽。请提出正确的方法。
[创建广告位,例如closeMyTab(int)
并将选项卡小部件的tabCloseRequested(int)
信号连接到此插槽。在此插槽调用选项卡中,小部件的removeTab
方法具有从信号接收到的索引。
请参见this answer以获取更多详细信息。
您只需要告诉tabWidget
本身以如下方式关闭所请求的Tab索引(传递给插槽的参数):
ui->tabWidget->removeTab(index);
对于以后寻找这个PyQt5解决方案的人,可以将其浓缩为1-liner:
tabs = QTabWidget()
tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index))
tabCloseRequested信号发出的整数等于发出它的标签的索引,因此您可以将其连接到以索引为参数的lambda函数。
我唯一可以看到的问题是,将lambda函数连接到插槽可防止在删除选项卡(see here)时对象被垃圾回收。