Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTabWidget:关闭选项卡按钮不工作_Qt_Qt4_Qt4.8_Qtabwidget - Fatal编程技术网

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
仅在每个选项卡上显示一个叉号,单击此按钮不关闭选项卡。我还需要做什么才能使选项卡可关闭?我尝试连接任何接近signal
tabCloseRequested(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);