QTabWidget:关闭选项卡按钮不工作
我已经设置了QTabWidget:关闭选项卡按钮不工作,qt,qt4,qt4.8,qtabwidget,Qt,Qt4,Qt4.8,Qtabwidget,我已经设置了ui->tabWidget->setTabsClosable(true)但QTabwidget仅在每个选项卡上显示一个叉号,单击此按钮不关闭选项卡。我还需要做什么才能使选项卡可关闭?我尝试连接任何接近signaltabCloseRequested(int)的插槽(适合此工作),但在tabwidget中找不到任何此类插槽。请建议正确的方法。创建一个插槽,例如closeMyTab(int)并将选项卡小部件的tabCloseRequested(int)信号连接到此插槽。在此插槽调用选项卡小
ui->tabWidget->setTabsClosable(true)
但QTabwidget
仅在每个选项卡上显示一个叉号,单击此按钮不关闭选项卡。我还需要做什么才能使选项卡可关闭?我尝试连接任何接近signaltabCloseRequested(int)
的插槽(适合此工作),但在tabwidget中找不到任何此类插槽。请建议正确的方法。创建一个插槽,例如closeMyTab(int)
并将选项卡小部件的tabCloseRequested(int)
信号连接到此插槽。在此插槽调用选项卡小部件的removeTab
方法中,使用从信号接收到的索引
有关更多详细信息,请参阅。您只需告诉
tabWidget
本身关闭请求的选项卡索引(传递到插槽的参数),如下所示:
对于将来偶然发现这个问题并寻求PyQt5解决方案的人,可以将其浓缩为一行:
tabs = QTabWidget()
tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index))
tabCloseRequested信号发出一个整数,该整数等于发出该信号的选项卡的索引,因此您可以将其连接到一个以索引为参数的lambda函数
我看到的唯一问题是,将lambda函数连接到插槽可以防止对象在删除选项卡()时被垃圾收集。自从我们使用了新的连接语法(Qt 5)以来,最好的方法是:
确实在Qt5上工作得很好。推荐此解决方案。
tabs = QTabWidget()
tabs.tabCloseRequested.connect(lambda index: tabs.removeTab(index))
QTabWidget* tabWidet = new QTabWidget();
connect(tabWidget->tabBar(), &QTabBar::tabCloseRequested, tabWidget->tabBar(), &QTabBar::removeTab);