C++ 关闭Qt中的选项卡,是否同时关闭多个选项卡?

C++ 关闭Qt中的选项卡,是否同时关闭多个选项卡?,c++,qt,tabs,tabbing,C++,Qt,Tabs,Tabbing,因此,我一直在一些网站上寻找关闭选项卡的函数的代码示例。我将选项卡设置为closable(这非常好),但我遇到的问题是,当我关闭选项卡时(特别是第二个选项卡之后),它会关闭该选项卡之后的每个选项卡 我的标题: private slots: void on_btn_newTab_clicked(); void on_tabWidget_tabCloseRequested(int index); 我的cpp: void MainWindow::on_tabWidget_tabCloseReques

因此,我一直在一些网站上寻找关闭选项卡的函数的代码示例。我将选项卡设置为closable(这非常好),但我遇到的问题是,当我关闭选项卡时(特别是第二个选项卡之后),它会关闭该选项卡之后的每个选项卡

我的标题:

private slots:
void on_btn_newTab_clicked();
void on_tabWidget_tabCloseRequested(int index);
我的cpp:

void MainWindow::on_tabWidget_tabCloseRequested(int index)
{
    connect(ui -> tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int)));
}

void MainWindow::closeTab(int index)
{
    ui -> tabWidget -> removeTab(index);
}

我错过什么了吗?我认为这是因为我没有指定一个索引来关闭一个特定的选项卡,但是我认为这个插槽的参数就是我需要的索引。我错了吗?

我认为连接部分不对

在\u tabWidget\u tabCloseRequested(int index)上,您应该调用
ui->tabWidget->removeTab(index)
不连接信号

我认为您创建了额外的信号,这就是为什么在尝试关闭选项卡之后删除所有选项卡的原因

编辑:

要展开一点:


我认为,在第一次单击时,不会删除任何选项卡,但您可以创建一个连接,使用\u tabWidget\u tabCloseRequested(int index)删除选项卡。在第二次尝试时,请与\u tabWidget\u tabCloseRequested(int index)上的
创建连接,然后调用
closeTab
。第三次尝试时,您创建了另一个连接,并使用相同的索引调用了两次
closeTab
,因此您单击的选项卡将被删除,下一个选项卡将

你为什么要自己结账?QTabWidget不是已经处理好了吗?我必须实现这段代码才能真正删除标签。当您将选项卡设置为可关闭时,它所做的只是显示一点可单击的“x”,但不一定在单击时关闭选项卡。这解决了问题,谢谢!同时,感谢它背后的理论,总是愿意学习新的东西!