我已设置ui->tabWidget->setTabsClosable(true);
,但QTabwidget
仅在每个标签上显示一个十字,而不是在点击此按钮时关闭标签。还有什么办法可以让标签关闭?我试图连接信号tabCloseRequested(int)
附近的任何插槽(这对于这项工作是合适的)但是在tabwidget中找不到任何这样的插槽。请以正确的方式建议。
答案 0 :(得分:23)
创建一个插槽,例如closeMyTab(int)
并将标签小部件的tabCloseRequested(int)
信号连接到此广告位。在此插槽调用选项卡小部件的removeTab
方法中,从信号中收到索引。
有关详细信息,请参阅this answer。
答案 1 :(得分:3)
对于以后遇到这个问题的人,寻找PyQt5解决方案,可以将其浓缩为1-liner:
tabs = QTabWidget()
tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index))
tabCloseRequested信号发出的整数等于发出该信号的标签的索引,因此您可以将其连接到以索引为参数的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);