所以我一直在讨论一些网站,以获取关闭标签功能的代码示例。我将标签设置为可关闭(完全没问题),但我遇到的问题是,当我关闭标签(特别是第二个标签)时,它会关闭标签后的每个标签。
我的标题:
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);
}
我错过了什么吗?我以为是因为我没有指定关闭特定选项卡的索引,但后来我认为这个插槽的参数是我需要的索引。我错了吗?
答案 0 :(得分:0)
我不认为连接部分是对的..
在on_tabWidget_tabCloseRequested(int index)
上,您应致电ui->tabWidget->removeTab(index)
,不要连接信号..
我认为您创建了额外的信号,这就是为什么在您尝试关闭的标签后删除所有标签的原因。
编辑:
扩大一点:
我认为,首次点击时不会删除任何标签,但您创建了一个连接以删除包含on_tabWidget_tabCloseRequested(int index)
的标签。在您第二次尝试再次尝试时,请与on_tabWidget_tabCloseRequested(int index)
建立关联并致电closeTab
。在第三次尝试时,您创建另一个连接并使用相同的索引调用closeTab
两次,因此您单击的选项卡将被删除,下一个选项卡将被删除...