关闭Qt中的标签,一次关闭多个标签?

时间:2013-12-05 20:15:38

标签: c++ qt tabs tabbing

所以我一直在讨论一些网站,以获取关闭标签功能的代码示例。我将标签设置为可关闭(完全没问题),但我遇到的问题是,当我关闭标签(特别是第二个标签)时,它会关闭标签后的每个标签。

我的标题:

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);
}

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

1 个答案:

答案 0 :(得分:0)

我不认为连接部分是对的..

on_tabWidget_tabCloseRequested(int index)上,您应致电ui->tabWidget->removeTab(index),不要连接信号..

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

编辑:

扩大一点:

我认为,首次点击时不会删除任何标签,但您创建了一个连接以删除包含on_tabWidget_tabCloseRequested(int index)的标签。在您第二次尝试再次尝试时,请与on_tabWidget_tabCloseRequested(int index)建立关联并致电closeTab。在第三次尝试时,您创建另一个连接并使用相同的索引调用closeTab两次,因此您单击的选项卡将被删除,下一个选项卡将被删除...